diff --git a/go.mod b/go.mod
index 99f1af62..c030c09f 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
k8s.io/code-generator v0.35.8
k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2
- knative.dev/pkg v0.0.0-20260622140654-39ebae2ee2dc
+ knative.dev/pkg v0.0.0-20260918182429-5dc1978f0042
)
require (
@@ -34,7 +34,7 @@ require (
github.com/docker/docker-credential-helpers v0.9.5 // indirect
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
- github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/felixge/httpsnoop v1.1.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-logr/logr v1.4.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
@@ -60,34 +60,34 @@ require (
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
- github.com/prometheus/client_golang v1.23.2 // indirect
+ github.com/prometheus/client_golang v1.24.1 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.70.1 // indirect
github.com/prometheus/otlptranslator v1.0.0 // indirect
- github.com/prometheus/procfs v0.21.0 // indirect
+ github.com/prometheus/procfs v0.21.1 // indirect
github.com/sirupsen/logrus v1.9.4 // indirect
github.com/spf13/pflag v1.0.10 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/runtime v0.69.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0 // indirect
- go.opentelemetry.io/otel/exporters/prometheus v0.66.0 // indirect
- go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.44.0 // indirect
- go.opentelemetry.io/otel/sdk v1.44.0 // indirect
- go.opentelemetry.io/otel/sdk/metric v1.44.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/runtime v0.70.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.45.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.45.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0 // indirect
+ go.opentelemetry.io/otel/exporters/prometheus v0.67.0 // indirect
+ go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.45.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.45.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.45.0 // indirect
go.opentelemetry.io/otel/trace v1.46.0 // indirect
- go.opentelemetry.io/proto/otlp v1.10.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.11.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.5 // indirect
golang.org/x/exp v0.0.0-20250808145144-a408d31f581a // indirect
- golang.org/x/mod v0.38.0 // indirect
+ golang.org/x/mod v0.39.0 // indirect
golang.org/x/net v0.58.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.22.0 // indirect
@@ -95,10 +95,10 @@ require (
golang.org/x/term v0.45.0 // indirect
golang.org/x/text v0.41.0 // indirect
golang.org/x/time v0.15.0 // indirect
- golang.org/x/tools v0.48.0 // indirect
+ golang.org/x/tools v0.49.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20260727163830-6c54dddc4772 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20260720155508-bb71a54f79dc // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d // indirect
google.golang.org/grpc v1.83.2 // indirect
google.golang.org/protobuf v1.36.12 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
diff --git a/go.sum b/go.sum
index c9e6d9c9..ef2f42bb 100644
--- a/go.sum
+++ b/go.sum
@@ -30,8 +30,8 @@ github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lSh
github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
-github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
-github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc=
+github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE=
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -100,16 +100,16 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
-github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
-github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
+github.com/prometheus/client_golang v1.24.1 h1:JnJkREXzWxUdCuPFpIWZiPispT9xVV59uiuyR2bPlnU=
+github.com/prometheus/client_golang v1.24.1/go.mod h1:F+oSRECHg4sse5ucfYpYDeIv/hu68Zo0uoHKetWnzcE=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
github.com/prometheus/common v0.70.1 h1:1HvjP4D5oL3t8RsPlwxA9onvvStjtIHYE5XuuwOi/PY=
github.com/prometheus/common v0.70.1/go.mod h1:VdFUQDMZK3VLkurFUVhia6uys/0suUp86TJz5qbJRhc=
github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos=
github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM=
-github.com/prometheus/procfs v0.21.0 h1:Qh/e6TlBjZf+XLLqNCqFGmCU6Kj/2Bu7kj3oAc0UnXc=
-github.com/prometheus/procfs v0.21.0/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY=
+github.com/prometheus/procfs v0.21.1 h1:GljZCt+zSTS+NZq88cyQ1LjZ+RCHp3uVuabBWA5+OJI=
+github.com/prometheus/procfs v0.21.1/go.mod h1:aB55Cww9pdSJVHk0hUf0inxWyyjPogFIjmHKYgMKmtY=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=
@@ -130,38 +130,38 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI=
-go.opentelemetry.io/contrib/instrumentation/runtime v0.69.0 h1:MtkMsuRo3zEXTTMALfyrszwCDZTkB6wolyPjbwFAdq0=
-go.opentelemetry.io/contrib/instrumentation/runtime v0.69.0/go.mod h1:FYTxnpsm+UPD0erZNq20GvnM8T2YQHiHtT2vokdpoac=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0 h1:LMuyCAyfalSjDyjdC65nK6N0zoTT63+E/u95X0JovZI=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0/go.mod h1:085m8qbm4hgc8rZWGDEa4vmyyo2c3nPxUslYUKUIU04=
+go.opentelemetry.io/contrib/instrumentation/runtime v0.70.0 h1:1+WLVYezXA9tkuVzKQri8zgB1cEIVYKUSoYIRjsBiMU=
+go.opentelemetry.io/contrib/instrumentation/runtime v0.70.0/go.mod h1:rbAXUUXqQDMxpSnmof4VtcZ+7YpZQEtjXSCIfdvR0Go=
go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc=
go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE=
-go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0 h1:SUplec5dp06reu1zaXmOXdvqH398taqrDXqUl99jxSc=
-go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0/go.mod h1:ho2g4N+ane+swq5I/VBkKWnRDY4kUINH3FuqyZqX/Ug=
-go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 h1:RuynHbfU8JUEw7DyONgkVYg2SVtsoF28y0LGIr69jgA=
-go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0/go.mod h1:qZF+/lBs71APw8mlnEZcqZHMzqrYrsFiJOv83lX1OGo=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 h1:4YsVu3B8+3qtWYYrsUYgn0OG78pN0rnNPRGX4SbokQI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0/go.mod h1:+wnlSn0mD1ADVMe3v9Z/WIaiz6q6gL2J/ejaAmdmv80=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 h1:qazEJlUOQzhCpzQpFETGby7EdqjI1wsd0W+6Gg1SCTU=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0/go.mod h1:fOD2Yefuxixkx3ahVNf0O/PERb6r4OlbxfATVnYvzCo=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0 h1:lgh3PiVrRUWMLOVSkQicxzZll5NjF1r+AtsX1XRIHw0=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0/go.mod h1:5Cnhth3m/AgOeTgE3ex12pPmiu/gGtZit03kSzx9X7s=
-go.opentelemetry.io/otel/exporters/prometheus v0.66.0 h1:vkrK8PAznv2NKt2r+kdu252ccGzkEqLc2aSXbQIALYQ=
-go.opentelemetry.io/otel/exporters/prometheus v0.66.0/go.mod h1:V/UB6D3vMF/UBOL5igAsAYnk1nG/bzYYTzvsB16cy7o=
-go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.44.0 h1:bl2S7Ubua0Nms+D/gAmznQTd4dxxMA93aKbcpKqiTCs=
-go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.44.0/go.mod h1:L0hRV50XdVIODHUfWEqGRCXQvj2rV82STVo12FMFBU0=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.45.0 h1:klTViGcsvLCd1xN3rZzfZ12NslC/OimbmR+k+A006RI=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.45.0/go.mod h1:jRsK04CWmXuY8A0O+wMpSf+t90RHZ53o5Qmxn2PQPfk=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.45.0 h1:pnxy6c/kvNBWdNNFzqpjuJLm9Hjhgk/Q0nY221rwuk0=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.45.0/go.mod h1:qw6YsFapotRwoDhXRZvljzaOvCQB7UfnafEJagpN2TA=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 h1:QRefszxJmfPdjXUUm3j6iDzY03mTPXMjqErFqQ67vUg=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0/go.mod h1:Tiz03lTBVBrm7eWZBOidzEaYaJa8tjwGUGv6d8mlTyk=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0 h1:fG5MCxGz8+2VtrN/WgqSpJFctVz24gpxj8CxkKmc8Ww=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0/go.mod h1:BmAYTn+3ysbRe+IU2msxmf5Rx3g6DHvex+tWI3LdhYI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0 h1:QBajQ2SrwQijzHyZbQlPsuIzpl/ll8DY6wPWsajeGcI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0/go.mod h1:08ZQLjrPLQ6R4kAXvuOvODEer5Yh4CoFvll5qB2BCI8=
+go.opentelemetry.io/otel/exporters/prometheus v0.67.0 h1:7IefDa35e6V3NoiqIeLDMDxMFyZDk5qcoC0Ax4cC16E=
+go.opentelemetry.io/otel/exporters/prometheus v0.67.0/go.mod h1:nsPI1awTg5Vmg1YrommL2mVarVGlqc4yXOoKAkPRD0c=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.45.0 h1:lsA/S1bxgdbyFGkTj+3meEdJ6ADVU7QoFstV6MXgE68=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.45.0/go.mod h1:L7u+MirGoB1bjeLH66+xDykF4RC8C3RN7lIFpBiewUo=
go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8=
go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o=
-go.opentelemetry.io/otel/metric/x v0.66.0 h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA=
-go.opentelemetry.io/otel/metric/x v0.66.0/go.mod h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk=
-go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
-go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
-go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
-go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
+go.opentelemetry.io/otel/metric/x v0.67.0 h1:PcicCNZFkZ4bXfSooXdo3WN7RBOVOtjVdo1wD358Uns=
+go.opentelemetry.io/otel/metric/x v0.67.0/go.mod h1:FBjCWZe6wgcqxcMtjdGiClDKXb2YxxXii0CXftE4QtI=
+go.opentelemetry.io/otel/sdk v1.45.0 h1:4VVSMgQ83dUgW2aoX5f6JgLvHwIvzcuLnF9lUdCSpCw=
+go.opentelemetry.io/otel/sdk v1.45.0/go.mod h1:Sr40LgXV7DsKMMJMKOhUWOgMWTfAaqvm2kF0g7ilwuA=
+go.opentelemetry.io/otel/sdk/metric v1.45.0 h1:oVFszMfyj1Am6s24Vtc7wBb8BKLcwepJjNEYILuiE3o=
+go.opentelemetry.io/otel/sdk/metric v1.45.0/go.mod h1:vUWUxDZvu1WVRj8JA8S0AdhsPrZoDpA2DdZauIh4mDA=
go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c=
go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI=
-go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
-go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
+go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk=
+go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
@@ -179,8 +179,8 @@ go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
golang.org/x/exp v0.0.0-20250808145144-a408d31f581a h1:Y+7uR/b1Mw2iSXZ3G//1haIiSElDQZ8KWh0h+sZPG90=
golang.org/x/exp v0.0.0-20250808145144-a408d31f581a/go.mod h1:rT6SFzZ7oxADUDx58pcaKFTcZ+inxAa9fTrYx/uVYwg=
-golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk=
-golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40=
+golang.org/x/mod v0.39.0 h1:UF5zwQdCRRUpHfyPwr7d4UrGiVeldIsogtzWVnczL74=
+golang.org/x/mod v0.39.0/go.mod h1:bvIbwjQ0HUFFf5AKukeeYQG4ZBUG9yxQbR9aEweIwYY=
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
@@ -195,8 +195,8 @@ golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
-golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE=
-golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk=
+golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI=
+golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo=
golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=
@@ -205,10 +205,10 @@ gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0
gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
-google.golang.org/genproto/googleapis/api v0.0.0-20260727163830-6c54dddc4772 h1:4namukbyF7JY83aWHQwi9J5ugNTnDReLJ9ZcpqOpRB4=
-google.golang.org/genproto/googleapis/api v0.0.0-20260727163830-6c54dddc4772/go.mod h1:1brfde68Npq6+WA75c1EHWPijZEG1kMus61ygPZfn4A=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260720155508-bb71a54f79dc h1:3TtNq/QbJNrSY1nVdjcikfBw6ujnaNbdrd88wNr1OW4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260720155508-bb71a54f79dc/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d h1:FarXi840EJWSHYTN3ERkADbPWjl307+FGrA22KAVjjc=
+google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d/go.mod h1:K/+WGbmBY7aNW1HDw1fJnKYo10i0DkAX6pows00dLig=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d h1:IL4hdHzcUv2l/gcg98/Rj3FbtE6axwqslOW8SW0C+S0=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
@@ -242,8 +242,8 @@ k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hk
k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0=
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU=
k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
-knative.dev/pkg v0.0.0-20260622140654-39ebae2ee2dc h1:i2GrJuRdTFd4sNWocwefVGwuSOkOPjtadEWRTiGsEOY=
-knative.dev/pkg v0.0.0-20260622140654-39ebae2ee2dc/go.mod h1:Ve19ZYW7DwIfQL4oCT9t9zmPp4egv0KacKVPXUcivDQ=
+knative.dev/pkg v0.0.0-20260918182429-5dc1978f0042 h1:hZ4eQYaloFYHe70C6EAjGb3N9mKLPNOwhEdQmNs6v2M=
+knative.dev/pkg v0.0.0-20260918182429-5dc1978f0042/go.mod h1:zhIH5iW5e2l3rajXrpi3u31lEUTncLniK5BhtSe4DpI=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
diff --git a/vendor/github.com/felixge/httpsnoop/capture_metrics.go b/vendor/github.com/felixge/httpsnoop/capture_metrics.go
index bec7b71b..97f0a51d 100644
--- a/vendor/github.com/felixge/httpsnoop/capture_metrics.go
+++ b/vendor/github.com/felixge/httpsnoop/capture_metrics.go
@@ -69,6 +69,16 @@ func (m *Metrics) CaptureMetrics(w http.ResponseWriter, fn func(http.ResponseWri
}
},
+ WriteString: func(next WriteStringFunc) WriteStringFunc {
+ return func(s string) (int, error) {
+ n, err := next(s)
+
+ m.Written += int64(n)
+ headerWritten = true
+ return n, err
+ }
+ },
+
ReadFrom: func(next ReadFromFunc) ReadFromFunc {
return func(src io.Reader) (int64, error) {
n, err := next(src)
@@ -81,6 +91,31 @@ func (m *Metrics) CaptureMetrics(w http.ResponseWriter, fn func(http.ResponseWri
}
)
+ // defer to ensure duration is updated even if the handler panics
+ defer func() {
+ m.Duration += time.Since(start)
+ }()
fn(Wrap(w, hooks))
- m.Duration += time.Since(start)
+}
+
+// deadliner defines two methods introduced in go 1.20. The standard library
+// seems not to provide an interface we can import, hence its definition here.
+type deadliner interface {
+ SetReadDeadline(deadline time.Time) error
+ SetWriteDeadline(deadline time.Time) error
+}
+
+// fullDuplexEnabler defines a method introduced in go 1.21. The standard
+// library seems not to provide an interface we can import, hence its definition
+// here.
+type fullDuplexEnabler interface {
+ EnableFullDuplex() error
+}
+
+// httpFlushError defines a method introduced in go 1.20. The standard
+// library seems not to provide an interface we can import, hence its definition
+// here.
+// See https://github.com/golang/go/blob/go1.20/src/net/http/responsecontroller.go#L50
+type httpFlushError interface {
+ FlushError() error
}
diff --git a/vendor/github.com/felixge/httpsnoop/wrap_generated.go b/vendor/github.com/felixge/httpsnoop/wrap_generated.go
new file mode 100644
index 00000000..b6549ba9
--- /dev/null
+++ b/vendor/github.com/felixge/httpsnoop/wrap_generated.go
@@ -0,0 +1,16179 @@
+// Code generated by "httpsnoop/codegen"; DO NOT EDIT.
+
+package httpsnoop
+
+import (
+ "bufio"
+ "io"
+ "net"
+ "net/http"
+ "time"
+)
+
+// HeaderFunc is part of the http.ResponseWriter interface.
+type HeaderFunc func() http.Header
+
+// WriteHeaderFunc is part of the http.ResponseWriter interface.
+type WriteHeaderFunc func(code int)
+
+// WriteFunc is part of the http.ResponseWriter interface.
+type WriteFunc func(b []byte) (int, error)
+
+// FlushFunc is part of the http.Flusher interface.
+type FlushFunc func()
+
+// FlushErrorFunc is part of the httpFlushError interface.
+type FlushErrorFunc func() error
+
+// CloseNotifyFunc is part of the http.CloseNotifier interface.
+type CloseNotifyFunc func() <-chan bool
+
+// HijackFunc is part of the http.Hijacker interface.
+type HijackFunc func() (net.Conn, *bufio.ReadWriter, error)
+
+// ReadFromFunc is part of the io.ReaderFrom interface.
+type ReadFromFunc func(src io.Reader) (int64, error)
+
+// SetReadDeadlineFunc is part of the deadliner interface.
+type SetReadDeadlineFunc func(deadline time.Time) error
+
+// SetWriteDeadlineFunc is part of the deadliner interface.
+type SetWriteDeadlineFunc func(deadline time.Time) error
+
+// EnableFullDuplexFunc is part of the fullDuplexEnabler interface.
+type EnableFullDuplexFunc func() error
+
+// PushFunc is part of the http.Pusher interface.
+type PushFunc func(target string, opts *http.PushOptions) error
+
+// WriteStringFunc is part of the io.StringWriter interface.
+type WriteStringFunc func(s string) (int, error)
+
+// Hooks defines a set of method interceptors for methods included in
+// http.ResponseWriter as well as some others. You can think of them as
+// middleware for the function calls they target. See Wrap for more details.
+//
+// For each method, the exact matching hook takes precedence. For example,
+// WriteString calls the WriteString hook when it is configured, even if a
+// Write hook is also configured. If the exact hook is not configured, most
+// methods call through to the underlying ResponseWriter directly.
+//
+// Two compatibility fallbacks preserve the behavior users had before Wrap
+// learned about newer optional interfaces:
+// - If the underlying ResponseWriter implements io.StringWriter and
+// WriteString is called, but only the Write hook is configured, WriteString
+// is routed through the Write hook with []byte(s). If neither hook is
+// configured, WriteString calls the underlying WriteString method directly.
+// - If the underlying ResponseWriter implements both http.Flusher and
+// FlushError, and FlushError is called, but only the Flush hook is
+// configured, FlushError is routed through the Flush hook while preserving
+// the error returned by the underlying FlushError method. If neither hook is
+// configured, FlushError calls the underlying FlushError method directly.
+type Hooks struct {
+ Header func(HeaderFunc) HeaderFunc
+ WriteHeader func(WriteHeaderFunc) WriteHeaderFunc
+ Write func(WriteFunc) WriteFunc
+ Flush func(FlushFunc) FlushFunc
+ FlushError func(FlushErrorFunc) FlushErrorFunc
+ CloseNotify func(CloseNotifyFunc) CloseNotifyFunc
+ Hijack func(HijackFunc) HijackFunc
+ ReadFrom func(ReadFromFunc) ReadFromFunc
+ SetReadDeadline func(SetReadDeadlineFunc) SetReadDeadlineFunc
+ SetWriteDeadline func(SetWriteDeadlineFunc) SetWriteDeadlineFunc
+ EnableFullDuplex func(EnableFullDuplexFunc) EnableFullDuplexFunc
+ Push func(PushFunc) PushFunc
+ WriteString func(WriteStringFunc) WriteStringFunc
+}
+
+// Wrap returns a wrapped version of w that provides the exact same interface
+// as w. Specifically if w implements any combination of:
+//
+// - http.Flusher
+// - httpFlushError
+// - http.CloseNotifier
+// - http.Hijacker
+// - io.ReaderFrom
+// - deadliner
+// - fullDuplexEnabler
+// - http.Pusher
+// - io.StringWriter
+//
+// The wrapped version will implement the exact same combination. If no hooks
+// are set, the wrapped version also behaves exactly as w. Hooks targeting
+// methods not supported by w are ignored. Any other hooks will intercept the
+// method they target and may modify the call's arguments and/or return values.
+// The CaptureMetrics implementation serves as a working example for how the
+// hooks can be used.
+func Wrap(w http.ResponseWriter, hooks Hooks) http.ResponseWriter {
+ state := &rwState{w: w}
+ var combo uint16
+ if hooks.Header != nil {
+ state.header = hooks.Header(w.Header)
+ }
+ if hooks.WriteHeader != nil {
+ state.writeHeader = hooks.WriteHeader(w.WriteHeader)
+ }
+ if hooks.Write != nil {
+ state.write = hooks.Write(w.Write)
+ }
+ if t0, i0 := w.(http.Flusher); i0 {
+ combo |= 1 << 8
+ if hooks.Flush != nil {
+ state.flush = hooks.Flush(t0.Flush)
+ }
+ }
+ if t1, i1 := w.(httpFlushError); i1 {
+ combo |= 1 << 7
+ if hooks.FlushError != nil {
+ state.flushError = hooks.FlushError(t1.FlushError)
+ } else if state.flush != nil {
+ state.flushError = func() (err error) { hooks.Flush(func() { err = t1.FlushError() })(); return err }
+ }
+ }
+ if t2, i2 := w.(http.CloseNotifier); i2 {
+ combo |= 1 << 6
+ if hooks.CloseNotify != nil {
+ state.closeNotify = hooks.CloseNotify(t2.CloseNotify)
+ }
+ }
+ if t3, i3 := w.(http.Hijacker); i3 {
+ combo |= 1 << 5
+ if hooks.Hijack != nil {
+ state.hijack = hooks.Hijack(t3.Hijack)
+ }
+ }
+ if t4, i4 := w.(io.ReaderFrom); i4 {
+ combo |= 1 << 4
+ if hooks.ReadFrom != nil {
+ state.readFrom = hooks.ReadFrom(t4.ReadFrom)
+ }
+ }
+ if t5, i5 := w.(deadliner); i5 {
+ combo |= 1 << 3
+ if hooks.SetReadDeadline != nil {
+ state.setReadDeadline = hooks.SetReadDeadline(t5.SetReadDeadline)
+ }
+ if hooks.SetWriteDeadline != nil {
+ state.setWriteDeadline = hooks.SetWriteDeadline(t5.SetWriteDeadline)
+ }
+ }
+ if t6, i6 := w.(fullDuplexEnabler); i6 {
+ combo |= 1 << 2
+ if hooks.EnableFullDuplex != nil {
+ state.enableFullDuplex = hooks.EnableFullDuplex(t6.EnableFullDuplex)
+ }
+ }
+ if t7, i7 := w.(http.Pusher); i7 {
+ combo |= 1 << 1
+ if hooks.Push != nil {
+ state.push = hooks.Push(t7.Push)
+ }
+ }
+ if t8, i8 := w.(io.StringWriter); i8 {
+ combo |= 1 << 0
+ if hooks.WriteString != nil {
+ state.writeString = hooks.WriteString(t8.WriteString)
+ } else if state.write != nil {
+ state.writeString = func(s string) (int, error) { return state.write([]byte(s)) }
+ }
+ }
+ switch combo {
+ case 0:
+ return (*rw0)(state)
+ case 1:
+ return (*rw1)(state)
+ case 2:
+ return (*rw2)(state)
+ case 3:
+ return (*rw3)(state)
+ case 4:
+ return (*rw4)(state)
+ case 5:
+ return (*rw5)(state)
+ case 6:
+ return (*rw6)(state)
+ case 7:
+ return (*rw7)(state)
+ case 8:
+ return (*rw8)(state)
+ case 9:
+ return (*rw9)(state)
+ case 10:
+ return (*rw10)(state)
+ case 11:
+ return (*rw11)(state)
+ case 12:
+ return (*rw12)(state)
+ case 13:
+ return (*rw13)(state)
+ case 14:
+ return (*rw14)(state)
+ case 15:
+ return (*rw15)(state)
+ case 16:
+ return (*rw16)(state)
+ case 17:
+ return (*rw17)(state)
+ case 18:
+ return (*rw18)(state)
+ case 19:
+ return (*rw19)(state)
+ case 20:
+ return (*rw20)(state)
+ case 21:
+ return (*rw21)(state)
+ case 22:
+ return (*rw22)(state)
+ case 23:
+ return (*rw23)(state)
+ case 24:
+ return (*rw24)(state)
+ case 25:
+ return (*rw25)(state)
+ case 26:
+ return (*rw26)(state)
+ case 27:
+ return (*rw27)(state)
+ case 28:
+ return (*rw28)(state)
+ case 29:
+ return (*rw29)(state)
+ case 30:
+ return (*rw30)(state)
+ case 31:
+ return (*rw31)(state)
+ case 32:
+ return (*rw32)(state)
+ case 33:
+ return (*rw33)(state)
+ case 34:
+ return (*rw34)(state)
+ case 35:
+ return (*rw35)(state)
+ case 36:
+ return (*rw36)(state)
+ case 37:
+ return (*rw37)(state)
+ case 38:
+ return (*rw38)(state)
+ case 39:
+ return (*rw39)(state)
+ case 40:
+ return (*rw40)(state)
+ case 41:
+ return (*rw41)(state)
+ case 42:
+ return (*rw42)(state)
+ case 43:
+ return (*rw43)(state)
+ case 44:
+ return (*rw44)(state)
+ case 45:
+ return (*rw45)(state)
+ case 46:
+ return (*rw46)(state)
+ case 47:
+ return (*rw47)(state)
+ case 48:
+ return (*rw48)(state)
+ case 49:
+ return (*rw49)(state)
+ case 50:
+ return (*rw50)(state)
+ case 51:
+ return (*rw51)(state)
+ case 52:
+ return (*rw52)(state)
+ case 53:
+ return (*rw53)(state)
+ case 54:
+ return (*rw54)(state)
+ case 55:
+ return (*rw55)(state)
+ case 56:
+ return (*rw56)(state)
+ case 57:
+ return (*rw57)(state)
+ case 58:
+ return (*rw58)(state)
+ case 59:
+ return (*rw59)(state)
+ case 60:
+ return (*rw60)(state)
+ case 61:
+ return (*rw61)(state)
+ case 62:
+ return (*rw62)(state)
+ case 63:
+ return (*rw63)(state)
+ case 64:
+ return (*rw64)(state)
+ case 65:
+ return (*rw65)(state)
+ case 66:
+ return (*rw66)(state)
+ case 67:
+ return (*rw67)(state)
+ case 68:
+ return (*rw68)(state)
+ case 69:
+ return (*rw69)(state)
+ case 70:
+ return (*rw70)(state)
+ case 71:
+ return (*rw71)(state)
+ case 72:
+ return (*rw72)(state)
+ case 73:
+ return (*rw73)(state)
+ case 74:
+ return (*rw74)(state)
+ case 75:
+ return (*rw75)(state)
+ case 76:
+ return (*rw76)(state)
+ case 77:
+ return (*rw77)(state)
+ case 78:
+ return (*rw78)(state)
+ case 79:
+ return (*rw79)(state)
+ case 80:
+ return (*rw80)(state)
+ case 81:
+ return (*rw81)(state)
+ case 82:
+ return (*rw82)(state)
+ case 83:
+ return (*rw83)(state)
+ case 84:
+ return (*rw84)(state)
+ case 85:
+ return (*rw85)(state)
+ case 86:
+ return (*rw86)(state)
+ case 87:
+ return (*rw87)(state)
+ case 88:
+ return (*rw88)(state)
+ case 89:
+ return (*rw89)(state)
+ case 90:
+ return (*rw90)(state)
+ case 91:
+ return (*rw91)(state)
+ case 92:
+ return (*rw92)(state)
+ case 93:
+ return (*rw93)(state)
+ case 94:
+ return (*rw94)(state)
+ case 95:
+ return (*rw95)(state)
+ case 96:
+ return (*rw96)(state)
+ case 97:
+ return (*rw97)(state)
+ case 98:
+ return (*rw98)(state)
+ case 99:
+ return (*rw99)(state)
+ case 100:
+ return (*rw100)(state)
+ case 101:
+ return (*rw101)(state)
+ case 102:
+ return (*rw102)(state)
+ case 103:
+ return (*rw103)(state)
+ case 104:
+ return (*rw104)(state)
+ case 105:
+ return (*rw105)(state)
+ case 106:
+ return (*rw106)(state)
+ case 107:
+ return (*rw107)(state)
+ case 108:
+ return (*rw108)(state)
+ case 109:
+ return (*rw109)(state)
+ case 110:
+ return (*rw110)(state)
+ case 111:
+ return (*rw111)(state)
+ case 112:
+ return (*rw112)(state)
+ case 113:
+ return (*rw113)(state)
+ case 114:
+ return (*rw114)(state)
+ case 115:
+ return (*rw115)(state)
+ case 116:
+ return (*rw116)(state)
+ case 117:
+ return (*rw117)(state)
+ case 118:
+ return (*rw118)(state)
+ case 119:
+ return (*rw119)(state)
+ case 120:
+ return (*rw120)(state)
+ case 121:
+ return (*rw121)(state)
+ case 122:
+ return (*rw122)(state)
+ case 123:
+ return (*rw123)(state)
+ case 124:
+ return (*rw124)(state)
+ case 125:
+ return (*rw125)(state)
+ case 126:
+ return (*rw126)(state)
+ case 127:
+ return (*rw127)(state)
+ case 128:
+ return (*rw128)(state)
+ case 129:
+ return (*rw129)(state)
+ case 130:
+ return (*rw130)(state)
+ case 131:
+ return (*rw131)(state)
+ case 132:
+ return (*rw132)(state)
+ case 133:
+ return (*rw133)(state)
+ case 134:
+ return (*rw134)(state)
+ case 135:
+ return (*rw135)(state)
+ case 136:
+ return (*rw136)(state)
+ case 137:
+ return (*rw137)(state)
+ case 138:
+ return (*rw138)(state)
+ case 139:
+ return (*rw139)(state)
+ case 140:
+ return (*rw140)(state)
+ case 141:
+ return (*rw141)(state)
+ case 142:
+ return (*rw142)(state)
+ case 143:
+ return (*rw143)(state)
+ case 144:
+ return (*rw144)(state)
+ case 145:
+ return (*rw145)(state)
+ case 146:
+ return (*rw146)(state)
+ case 147:
+ return (*rw147)(state)
+ case 148:
+ return (*rw148)(state)
+ case 149:
+ return (*rw149)(state)
+ case 150:
+ return (*rw150)(state)
+ case 151:
+ return (*rw151)(state)
+ case 152:
+ return (*rw152)(state)
+ case 153:
+ return (*rw153)(state)
+ case 154:
+ return (*rw154)(state)
+ case 155:
+ return (*rw155)(state)
+ case 156:
+ return (*rw156)(state)
+ case 157:
+ return (*rw157)(state)
+ case 158:
+ return (*rw158)(state)
+ case 159:
+ return (*rw159)(state)
+ case 160:
+ return (*rw160)(state)
+ case 161:
+ return (*rw161)(state)
+ case 162:
+ return (*rw162)(state)
+ case 163:
+ return (*rw163)(state)
+ case 164:
+ return (*rw164)(state)
+ case 165:
+ return (*rw165)(state)
+ case 166:
+ return (*rw166)(state)
+ case 167:
+ return (*rw167)(state)
+ case 168:
+ return (*rw168)(state)
+ case 169:
+ return (*rw169)(state)
+ case 170:
+ return (*rw170)(state)
+ case 171:
+ return (*rw171)(state)
+ case 172:
+ return (*rw172)(state)
+ case 173:
+ return (*rw173)(state)
+ case 174:
+ return (*rw174)(state)
+ case 175:
+ return (*rw175)(state)
+ case 176:
+ return (*rw176)(state)
+ case 177:
+ return (*rw177)(state)
+ case 178:
+ return (*rw178)(state)
+ case 179:
+ return (*rw179)(state)
+ case 180:
+ return (*rw180)(state)
+ case 181:
+ return (*rw181)(state)
+ case 182:
+ return (*rw182)(state)
+ case 183:
+ return (*rw183)(state)
+ case 184:
+ return (*rw184)(state)
+ case 185:
+ return (*rw185)(state)
+ case 186:
+ return (*rw186)(state)
+ case 187:
+ return (*rw187)(state)
+ case 188:
+ return (*rw188)(state)
+ case 189:
+ return (*rw189)(state)
+ case 190:
+ return (*rw190)(state)
+ case 191:
+ return (*rw191)(state)
+ case 192:
+ return (*rw192)(state)
+ case 193:
+ return (*rw193)(state)
+ case 194:
+ return (*rw194)(state)
+ case 195:
+ return (*rw195)(state)
+ case 196:
+ return (*rw196)(state)
+ case 197:
+ return (*rw197)(state)
+ case 198:
+ return (*rw198)(state)
+ case 199:
+ return (*rw199)(state)
+ case 200:
+ return (*rw200)(state)
+ case 201:
+ return (*rw201)(state)
+ case 202:
+ return (*rw202)(state)
+ case 203:
+ return (*rw203)(state)
+ case 204:
+ return (*rw204)(state)
+ case 205:
+ return (*rw205)(state)
+ case 206:
+ return (*rw206)(state)
+ case 207:
+ return (*rw207)(state)
+ case 208:
+ return (*rw208)(state)
+ case 209:
+ return (*rw209)(state)
+ case 210:
+ return (*rw210)(state)
+ case 211:
+ return (*rw211)(state)
+ case 212:
+ return (*rw212)(state)
+ case 213:
+ return (*rw213)(state)
+ case 214:
+ return (*rw214)(state)
+ case 215:
+ return (*rw215)(state)
+ case 216:
+ return (*rw216)(state)
+ case 217:
+ return (*rw217)(state)
+ case 218:
+ return (*rw218)(state)
+ case 219:
+ return (*rw219)(state)
+ case 220:
+ return (*rw220)(state)
+ case 221:
+ return (*rw221)(state)
+ case 222:
+ return (*rw222)(state)
+ case 223:
+ return (*rw223)(state)
+ case 224:
+ return (*rw224)(state)
+ case 225:
+ return (*rw225)(state)
+ case 226:
+ return (*rw226)(state)
+ case 227:
+ return (*rw227)(state)
+ case 228:
+ return (*rw228)(state)
+ case 229:
+ return (*rw229)(state)
+ case 230:
+ return (*rw230)(state)
+ case 231:
+ return (*rw231)(state)
+ case 232:
+ return (*rw232)(state)
+ case 233:
+ return (*rw233)(state)
+ case 234:
+ return (*rw234)(state)
+ case 235:
+ return (*rw235)(state)
+ case 236:
+ return (*rw236)(state)
+ case 237:
+ return (*rw237)(state)
+ case 238:
+ return (*rw238)(state)
+ case 239:
+ return (*rw239)(state)
+ case 240:
+ return (*rw240)(state)
+ case 241:
+ return (*rw241)(state)
+ case 242:
+ return (*rw242)(state)
+ case 243:
+ return (*rw243)(state)
+ case 244:
+ return (*rw244)(state)
+ case 245:
+ return (*rw245)(state)
+ case 246:
+ return (*rw246)(state)
+ case 247:
+ return (*rw247)(state)
+ case 248:
+ return (*rw248)(state)
+ case 249:
+ return (*rw249)(state)
+ case 250:
+ return (*rw250)(state)
+ case 251:
+ return (*rw251)(state)
+ case 252:
+ return (*rw252)(state)
+ case 253:
+ return (*rw253)(state)
+ case 254:
+ return (*rw254)(state)
+ case 255:
+ return (*rw255)(state)
+ case 256:
+ return (*rw256)(state)
+ case 257:
+ return (*rw257)(state)
+ case 258:
+ return (*rw258)(state)
+ case 259:
+ return (*rw259)(state)
+ case 260:
+ return (*rw260)(state)
+ case 261:
+ return (*rw261)(state)
+ case 262:
+ return (*rw262)(state)
+ case 263:
+ return (*rw263)(state)
+ case 264:
+ return (*rw264)(state)
+ case 265:
+ return (*rw265)(state)
+ case 266:
+ return (*rw266)(state)
+ case 267:
+ return (*rw267)(state)
+ case 268:
+ return (*rw268)(state)
+ case 269:
+ return (*rw269)(state)
+ case 270:
+ return (*rw270)(state)
+ case 271:
+ return (*rw271)(state)
+ case 272:
+ return (*rw272)(state)
+ case 273:
+ return (*rw273)(state)
+ case 274:
+ return (*rw274)(state)
+ case 275:
+ return (*rw275)(state)
+ case 276:
+ return (*rw276)(state)
+ case 277:
+ return (*rw277)(state)
+ case 278:
+ return (*rw278)(state)
+ case 279:
+ return (*rw279)(state)
+ case 280:
+ return (*rw280)(state)
+ case 281:
+ return (*rw281)(state)
+ case 282:
+ return (*rw282)(state)
+ case 283:
+ return (*rw283)(state)
+ case 284:
+ return (*rw284)(state)
+ case 285:
+ return (*rw285)(state)
+ case 286:
+ return (*rw286)(state)
+ case 287:
+ return (*rw287)(state)
+ case 288:
+ return (*rw288)(state)
+ case 289:
+ return (*rw289)(state)
+ case 290:
+ return (*rw290)(state)
+ case 291:
+ return (*rw291)(state)
+ case 292:
+ return (*rw292)(state)
+ case 293:
+ return (*rw293)(state)
+ case 294:
+ return (*rw294)(state)
+ case 295:
+ return (*rw295)(state)
+ case 296:
+ return (*rw296)(state)
+ case 297:
+ return (*rw297)(state)
+ case 298:
+ return (*rw298)(state)
+ case 299:
+ return (*rw299)(state)
+ case 300:
+ return (*rw300)(state)
+ case 301:
+ return (*rw301)(state)
+ case 302:
+ return (*rw302)(state)
+ case 303:
+ return (*rw303)(state)
+ case 304:
+ return (*rw304)(state)
+ case 305:
+ return (*rw305)(state)
+ case 306:
+ return (*rw306)(state)
+ case 307:
+ return (*rw307)(state)
+ case 308:
+ return (*rw308)(state)
+ case 309:
+ return (*rw309)(state)
+ case 310:
+ return (*rw310)(state)
+ case 311:
+ return (*rw311)(state)
+ case 312:
+ return (*rw312)(state)
+ case 313:
+ return (*rw313)(state)
+ case 314:
+ return (*rw314)(state)
+ case 315:
+ return (*rw315)(state)
+ case 316:
+ return (*rw316)(state)
+ case 317:
+ return (*rw317)(state)
+ case 318:
+ return (*rw318)(state)
+ case 319:
+ return (*rw319)(state)
+ case 320:
+ return (*rw320)(state)
+ case 321:
+ return (*rw321)(state)
+ case 322:
+ return (*rw322)(state)
+ case 323:
+ return (*rw323)(state)
+ case 324:
+ return (*rw324)(state)
+ case 325:
+ return (*rw325)(state)
+ case 326:
+ return (*rw326)(state)
+ case 327:
+ return (*rw327)(state)
+ case 328:
+ return (*rw328)(state)
+ case 329:
+ return (*rw329)(state)
+ case 330:
+ return (*rw330)(state)
+ case 331:
+ return (*rw331)(state)
+ case 332:
+ return (*rw332)(state)
+ case 333:
+ return (*rw333)(state)
+ case 334:
+ return (*rw334)(state)
+ case 335:
+ return (*rw335)(state)
+ case 336:
+ return (*rw336)(state)
+ case 337:
+ return (*rw337)(state)
+ case 338:
+ return (*rw338)(state)
+ case 339:
+ return (*rw339)(state)
+ case 340:
+ return (*rw340)(state)
+ case 341:
+ return (*rw341)(state)
+ case 342:
+ return (*rw342)(state)
+ case 343:
+ return (*rw343)(state)
+ case 344:
+ return (*rw344)(state)
+ case 345:
+ return (*rw345)(state)
+ case 346:
+ return (*rw346)(state)
+ case 347:
+ return (*rw347)(state)
+ case 348:
+ return (*rw348)(state)
+ case 349:
+ return (*rw349)(state)
+ case 350:
+ return (*rw350)(state)
+ case 351:
+ return (*rw351)(state)
+ case 352:
+ return (*rw352)(state)
+ case 353:
+ return (*rw353)(state)
+ case 354:
+ return (*rw354)(state)
+ case 355:
+ return (*rw355)(state)
+ case 356:
+ return (*rw356)(state)
+ case 357:
+ return (*rw357)(state)
+ case 358:
+ return (*rw358)(state)
+ case 359:
+ return (*rw359)(state)
+ case 360:
+ return (*rw360)(state)
+ case 361:
+ return (*rw361)(state)
+ case 362:
+ return (*rw362)(state)
+ case 363:
+ return (*rw363)(state)
+ case 364:
+ return (*rw364)(state)
+ case 365:
+ return (*rw365)(state)
+ case 366:
+ return (*rw366)(state)
+ case 367:
+ return (*rw367)(state)
+ case 368:
+ return (*rw368)(state)
+ case 369:
+ return (*rw369)(state)
+ case 370:
+ return (*rw370)(state)
+ case 371:
+ return (*rw371)(state)
+ case 372:
+ return (*rw372)(state)
+ case 373:
+ return (*rw373)(state)
+ case 374:
+ return (*rw374)(state)
+ case 375:
+ return (*rw375)(state)
+ case 376:
+ return (*rw376)(state)
+ case 377:
+ return (*rw377)(state)
+ case 378:
+ return (*rw378)(state)
+ case 379:
+ return (*rw379)(state)
+ case 380:
+ return (*rw380)(state)
+ case 381:
+ return (*rw381)(state)
+ case 382:
+ return (*rw382)(state)
+ case 383:
+ return (*rw383)(state)
+ case 384:
+ return (*rw384)(state)
+ case 385:
+ return (*rw385)(state)
+ case 386:
+ return (*rw386)(state)
+ case 387:
+ return (*rw387)(state)
+ case 388:
+ return (*rw388)(state)
+ case 389:
+ return (*rw389)(state)
+ case 390:
+ return (*rw390)(state)
+ case 391:
+ return (*rw391)(state)
+ case 392:
+ return (*rw392)(state)
+ case 393:
+ return (*rw393)(state)
+ case 394:
+ return (*rw394)(state)
+ case 395:
+ return (*rw395)(state)
+ case 396:
+ return (*rw396)(state)
+ case 397:
+ return (*rw397)(state)
+ case 398:
+ return (*rw398)(state)
+ case 399:
+ return (*rw399)(state)
+ case 400:
+ return (*rw400)(state)
+ case 401:
+ return (*rw401)(state)
+ case 402:
+ return (*rw402)(state)
+ case 403:
+ return (*rw403)(state)
+ case 404:
+ return (*rw404)(state)
+ case 405:
+ return (*rw405)(state)
+ case 406:
+ return (*rw406)(state)
+ case 407:
+ return (*rw407)(state)
+ case 408:
+ return (*rw408)(state)
+ case 409:
+ return (*rw409)(state)
+ case 410:
+ return (*rw410)(state)
+ case 411:
+ return (*rw411)(state)
+ case 412:
+ return (*rw412)(state)
+ case 413:
+ return (*rw413)(state)
+ case 414:
+ return (*rw414)(state)
+ case 415:
+ return (*rw415)(state)
+ case 416:
+ return (*rw416)(state)
+ case 417:
+ return (*rw417)(state)
+ case 418:
+ return (*rw418)(state)
+ case 419:
+ return (*rw419)(state)
+ case 420:
+ return (*rw420)(state)
+ case 421:
+ return (*rw421)(state)
+ case 422:
+ return (*rw422)(state)
+ case 423:
+ return (*rw423)(state)
+ case 424:
+ return (*rw424)(state)
+ case 425:
+ return (*rw425)(state)
+ case 426:
+ return (*rw426)(state)
+ case 427:
+ return (*rw427)(state)
+ case 428:
+ return (*rw428)(state)
+ case 429:
+ return (*rw429)(state)
+ case 430:
+ return (*rw430)(state)
+ case 431:
+ return (*rw431)(state)
+ case 432:
+ return (*rw432)(state)
+ case 433:
+ return (*rw433)(state)
+ case 434:
+ return (*rw434)(state)
+ case 435:
+ return (*rw435)(state)
+ case 436:
+ return (*rw436)(state)
+ case 437:
+ return (*rw437)(state)
+ case 438:
+ return (*rw438)(state)
+ case 439:
+ return (*rw439)(state)
+ case 440:
+ return (*rw440)(state)
+ case 441:
+ return (*rw441)(state)
+ case 442:
+ return (*rw442)(state)
+ case 443:
+ return (*rw443)(state)
+ case 444:
+ return (*rw444)(state)
+ case 445:
+ return (*rw445)(state)
+ case 446:
+ return (*rw446)(state)
+ case 447:
+ return (*rw447)(state)
+ case 448:
+ return (*rw448)(state)
+ case 449:
+ return (*rw449)(state)
+ case 450:
+ return (*rw450)(state)
+ case 451:
+ return (*rw451)(state)
+ case 452:
+ return (*rw452)(state)
+ case 453:
+ return (*rw453)(state)
+ case 454:
+ return (*rw454)(state)
+ case 455:
+ return (*rw455)(state)
+ case 456:
+ return (*rw456)(state)
+ case 457:
+ return (*rw457)(state)
+ case 458:
+ return (*rw458)(state)
+ case 459:
+ return (*rw459)(state)
+ case 460:
+ return (*rw460)(state)
+ case 461:
+ return (*rw461)(state)
+ case 462:
+ return (*rw462)(state)
+ case 463:
+ return (*rw463)(state)
+ case 464:
+ return (*rw464)(state)
+ case 465:
+ return (*rw465)(state)
+ case 466:
+ return (*rw466)(state)
+ case 467:
+ return (*rw467)(state)
+ case 468:
+ return (*rw468)(state)
+ case 469:
+ return (*rw469)(state)
+ case 470:
+ return (*rw470)(state)
+ case 471:
+ return (*rw471)(state)
+ case 472:
+ return (*rw472)(state)
+ case 473:
+ return (*rw473)(state)
+ case 474:
+ return (*rw474)(state)
+ case 475:
+ return (*rw475)(state)
+ case 476:
+ return (*rw476)(state)
+ case 477:
+ return (*rw477)(state)
+ case 478:
+ return (*rw478)(state)
+ case 479:
+ return (*rw479)(state)
+ case 480:
+ return (*rw480)(state)
+ case 481:
+ return (*rw481)(state)
+ case 482:
+ return (*rw482)(state)
+ case 483:
+ return (*rw483)(state)
+ case 484:
+ return (*rw484)(state)
+ case 485:
+ return (*rw485)(state)
+ case 486:
+ return (*rw486)(state)
+ case 487:
+ return (*rw487)(state)
+ case 488:
+ return (*rw488)(state)
+ case 489:
+ return (*rw489)(state)
+ case 490:
+ return (*rw490)(state)
+ case 491:
+ return (*rw491)(state)
+ case 492:
+ return (*rw492)(state)
+ case 493:
+ return (*rw493)(state)
+ case 494:
+ return (*rw494)(state)
+ case 495:
+ return (*rw495)(state)
+ case 496:
+ return (*rw496)(state)
+ case 497:
+ return (*rw497)(state)
+ case 498:
+ return (*rw498)(state)
+ case 499:
+ return (*rw499)(state)
+ case 500:
+ return (*rw500)(state)
+ case 501:
+ return (*rw501)(state)
+ case 502:
+ return (*rw502)(state)
+ case 503:
+ return (*rw503)(state)
+ case 504:
+ return (*rw504)(state)
+ case 505:
+ return (*rw505)(state)
+ case 506:
+ return (*rw506)(state)
+ case 507:
+ return (*rw507)(state)
+ case 508:
+ return (*rw508)(state)
+ case 509:
+ return (*rw509)(state)
+ case 510:
+ return (*rw510)(state)
+ case 511:
+ return (*rw511)(state)
+ }
+ panic("unreachable")
+}
+
+type rwState struct {
+ w http.ResponseWriter
+ header HeaderFunc
+ writeHeader WriteHeaderFunc
+ write WriteFunc
+ flush FlushFunc
+ flushError FlushErrorFunc
+ closeNotify CloseNotifyFunc
+ hijack HijackFunc
+ readFrom ReadFromFunc
+ setReadDeadline SetReadDeadlineFunc
+ setWriteDeadline SetWriteDeadlineFunc
+ enableFullDuplex EnableFullDuplexFunc
+ push PushFunc
+ writeString WriteStringFunc
+}
+
+func (r *rwState) doHeader() http.Header {
+ if r.header != nil {
+ return r.header()
+ }
+ return r.w.Header()
+}
+
+func (r *rwState) doWriteHeader(code int) {
+ if r.writeHeader != nil {
+ r.writeHeader(code)
+ return
+ }
+ r.w.WriteHeader(code)
+}
+
+func (r *rwState) doWrite(b []byte) (int, error) {
+ if r.write != nil {
+ return r.write(b)
+ }
+ return r.w.Write(b)
+}
+
+func (r *rwState) doFlush() {
+ if r.flush != nil {
+ r.flush()
+ return
+ }
+ r.w.(http.Flusher).Flush()
+}
+
+func (r *rwState) doFlushError() error {
+ if r.flushError != nil {
+ return r.flushError()
+ }
+ return r.w.(httpFlushError).FlushError()
+}
+
+func (r *rwState) doCloseNotify() <-chan bool {
+ if r.closeNotify != nil {
+ return r.closeNotify()
+ }
+ return r.w.(http.CloseNotifier).CloseNotify()
+}
+
+func (r *rwState) doHijack() (net.Conn, *bufio.ReadWriter, error) {
+ if r.hijack != nil {
+ return r.hijack()
+ }
+ return r.w.(http.Hijacker).Hijack()
+}
+
+func (r *rwState) doReadFrom(src io.Reader) (int64, error) {
+ if r.readFrom != nil {
+ return r.readFrom(src)
+ }
+ return r.w.(io.ReaderFrom).ReadFrom(src)
+}
+
+func (r *rwState) doSetReadDeadline(deadline time.Time) error {
+ if r.setReadDeadline != nil {
+ return r.setReadDeadline(deadline)
+ }
+ return r.w.(deadliner).SetReadDeadline(deadline)
+}
+
+func (r *rwState) doSetWriteDeadline(deadline time.Time) error {
+ if r.setWriteDeadline != nil {
+ return r.setWriteDeadline(deadline)
+ }
+ return r.w.(deadliner).SetWriteDeadline(deadline)
+}
+
+func (r *rwState) doEnableFullDuplex() error {
+ if r.enableFullDuplex != nil {
+ return r.enableFullDuplex()
+ }
+ return r.w.(fullDuplexEnabler).EnableFullDuplex()
+}
+
+func (r *rwState) doPush(target string, opts *http.PushOptions) error {
+ if r.push != nil {
+ return r.push(target, opts)
+ }
+ return r.w.(http.Pusher).Push(target, opts)
+}
+
+func (r *rwState) doWriteString(s string) (int, error) {
+ if r.writeString != nil {
+ return r.writeString(s)
+ }
+ return r.w.(io.StringWriter).WriteString(s)
+}
+
+// combination 1/512: http.ResponseWriter
+type rw0 rwState
+
+func (w *rw0) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw0) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw0) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw0) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+
+// combination 2/512: http.ResponseWriter, io.StringWriter
+type rw1 rwState
+
+func (w *rw1) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw1) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw1) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw1) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw1) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 3/512: http.ResponseWriter, http.Pusher
+type rw2 rwState
+
+func (w *rw2) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw2) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw2) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw2) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw2) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 4/512: http.ResponseWriter, http.Pusher, io.StringWriter
+type rw3 rwState
+
+func (w *rw3) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw3) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw3) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw3) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw3) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw3) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 5/512: http.ResponseWriter, fullDuplexEnabler
+type rw4 rwState
+
+func (w *rw4) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw4) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw4) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw4) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw4) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 6/512: http.ResponseWriter, fullDuplexEnabler, io.StringWriter
+type rw5 rwState
+
+func (w *rw5) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw5) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw5) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw5) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw5) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw5) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 7/512: http.ResponseWriter, fullDuplexEnabler, http.Pusher
+type rw6 rwState
+
+func (w *rw6) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw6) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw6) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw6) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw6) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw6) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 8/512: http.ResponseWriter, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw7 rwState
+
+func (w *rw7) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw7) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw7) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw7) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw7) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw7) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw7) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 9/512: http.ResponseWriter, deadliner
+type rw8 rwState
+
+func (w *rw8) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw8) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw8) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw8) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw8) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw8) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 10/512: http.ResponseWriter, deadliner, io.StringWriter
+type rw9 rwState
+
+func (w *rw9) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw9) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw9) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw9) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw9) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw9) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw9) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 11/512: http.ResponseWriter, deadliner, http.Pusher
+type rw10 rwState
+
+func (w *rw10) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw10) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw10) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw10) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw10) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw10) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw10) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 12/512: http.ResponseWriter, deadliner, http.Pusher, io.StringWriter
+type rw11 rwState
+
+func (w *rw11) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw11) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw11) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw11) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw11) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw11) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw11) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw11) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 13/512: http.ResponseWriter, deadliner, fullDuplexEnabler
+type rw12 rwState
+
+func (w *rw12) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw12) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw12) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw12) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw12) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw12) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw12) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 14/512: http.ResponseWriter, deadliner, fullDuplexEnabler, io.StringWriter
+type rw13 rwState
+
+func (w *rw13) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw13) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw13) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw13) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw13) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw13) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw13) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw13) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 15/512: http.ResponseWriter, deadliner, fullDuplexEnabler, http.Pusher
+type rw14 rwState
+
+func (w *rw14) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw14) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw14) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw14) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw14) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw14) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw14) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw14) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 16/512: http.ResponseWriter, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw15 rwState
+
+func (w *rw15) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw15) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw15) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw15) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw15) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw15) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw15) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw15) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw15) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 17/512: http.ResponseWriter, io.ReaderFrom
+type rw16 rwState
+
+func (w *rw16) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw16) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw16) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw16) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw16) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 18/512: http.ResponseWriter, io.ReaderFrom, io.StringWriter
+type rw17 rwState
+
+func (w *rw17) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw17) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw17) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw17) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw17) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw17) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 19/512: http.ResponseWriter, io.ReaderFrom, http.Pusher
+type rw18 rwState
+
+func (w *rw18) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw18) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw18) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw18) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw18) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw18) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 20/512: http.ResponseWriter, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw19 rwState
+
+func (w *rw19) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw19) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw19) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw19) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw19) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw19) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw19) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 21/512: http.ResponseWriter, io.ReaderFrom, fullDuplexEnabler
+type rw20 rwState
+
+func (w *rw20) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw20) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw20) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw20) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw20) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw20) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 22/512: http.ResponseWriter, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw21 rwState
+
+func (w *rw21) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw21) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw21) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw21) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw21) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw21) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw21) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 23/512: http.ResponseWriter, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw22 rwState
+
+func (w *rw22) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw22) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw22) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw22) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw22) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw22) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw22) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 24/512: http.ResponseWriter, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw23 rwState
+
+func (w *rw23) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw23) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw23) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw23) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw23) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw23) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw23) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw23) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 25/512: http.ResponseWriter, io.ReaderFrom, deadliner
+type rw24 rwState
+
+func (w *rw24) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw24) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw24) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw24) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw24) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw24) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw24) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 26/512: http.ResponseWriter, io.ReaderFrom, deadliner, io.StringWriter
+type rw25 rwState
+
+func (w *rw25) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw25) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw25) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw25) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw25) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw25) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw25) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw25) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 27/512: http.ResponseWriter, io.ReaderFrom, deadliner, http.Pusher
+type rw26 rwState
+
+func (w *rw26) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw26) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw26) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw26) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw26) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw26) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw26) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw26) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 28/512: http.ResponseWriter, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw27 rwState
+
+func (w *rw27) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw27) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw27) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw27) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw27) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw27) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw27) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw27) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw27) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 29/512: http.ResponseWriter, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw28 rwState
+
+func (w *rw28) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw28) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw28) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw28) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw28) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw28) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw28) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw28) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 30/512: http.ResponseWriter, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw29 rwState
+
+func (w *rw29) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw29) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw29) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw29) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw29) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw29) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw29) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw29) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw29) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 31/512: http.ResponseWriter, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw30 rwState
+
+func (w *rw30) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw30) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw30) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw30) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw30) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw30) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw30) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw30) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw30) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 32/512: http.ResponseWriter, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw31 rwState
+
+func (w *rw31) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw31) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw31) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw31) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw31) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw31) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw31) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw31) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw31) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw31) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 33/512: http.ResponseWriter, http.Hijacker
+type rw32 rwState
+
+func (w *rw32) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw32) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw32) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw32) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw32) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 34/512: http.ResponseWriter, http.Hijacker, io.StringWriter
+type rw33 rwState
+
+func (w *rw33) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw33) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw33) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw33) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw33) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw33) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 35/512: http.ResponseWriter, http.Hijacker, http.Pusher
+type rw34 rwState
+
+func (w *rw34) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw34) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw34) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw34) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw34) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw34) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 36/512: http.ResponseWriter, http.Hijacker, http.Pusher, io.StringWriter
+type rw35 rwState
+
+func (w *rw35) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw35) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw35) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw35) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw35) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw35) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw35) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 37/512: http.ResponseWriter, http.Hijacker, fullDuplexEnabler
+type rw36 rwState
+
+func (w *rw36) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw36) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw36) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw36) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw36) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw36) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 38/512: http.ResponseWriter, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw37 rwState
+
+func (w *rw37) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw37) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw37) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw37) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw37) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw37) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw37) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 39/512: http.ResponseWriter, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw38 rwState
+
+func (w *rw38) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw38) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw38) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw38) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw38) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw38) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw38) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 40/512: http.ResponseWriter, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw39 rwState
+
+func (w *rw39) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw39) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw39) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw39) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw39) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw39) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw39) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw39) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 41/512: http.ResponseWriter, http.Hijacker, deadliner
+type rw40 rwState
+
+func (w *rw40) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw40) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw40) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw40) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw40) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw40) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw40) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 42/512: http.ResponseWriter, http.Hijacker, deadliner, io.StringWriter
+type rw41 rwState
+
+func (w *rw41) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw41) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw41) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw41) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw41) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw41) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw41) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw41) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 43/512: http.ResponseWriter, http.Hijacker, deadliner, http.Pusher
+type rw42 rwState
+
+func (w *rw42) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw42) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw42) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw42) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw42) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw42) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw42) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw42) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 44/512: http.ResponseWriter, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw43 rwState
+
+func (w *rw43) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw43) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw43) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw43) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw43) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw43) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw43) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw43) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw43) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 45/512: http.ResponseWriter, http.Hijacker, deadliner, fullDuplexEnabler
+type rw44 rwState
+
+func (w *rw44) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw44) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw44) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw44) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw44) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw44) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw44) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw44) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 46/512: http.ResponseWriter, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw45 rwState
+
+func (w *rw45) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw45) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw45) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw45) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw45) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw45) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw45) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw45) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw45) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 47/512: http.ResponseWriter, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw46 rwState
+
+func (w *rw46) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw46) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw46) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw46) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw46) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw46) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw46) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw46) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw46) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 48/512: http.ResponseWriter, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw47 rwState
+
+func (w *rw47) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw47) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw47) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw47) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw47) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw47) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw47) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw47) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw47) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw47) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 49/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom
+type rw48 rwState
+
+func (w *rw48) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw48) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw48) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw48) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw48) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw48) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 50/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw49 rwState
+
+func (w *rw49) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw49) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw49) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw49) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw49) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw49) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw49) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 51/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw50 rwState
+
+func (w *rw50) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw50) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw50) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw50) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw50) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw50) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw50) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 52/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw51 rwState
+
+func (w *rw51) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw51) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw51) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw51) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw51) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw51) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw51) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw51) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 53/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw52 rwState
+
+func (w *rw52) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw52) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw52) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw52) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw52) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw52) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw52) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 54/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw53 rwState
+
+func (w *rw53) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw53) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw53) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw53) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw53) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw53) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw53) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw53) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 55/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw54 rwState
+
+func (w *rw54) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw54) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw54) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw54) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw54) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw54) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw54) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw54) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 56/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw55 rwState
+
+func (w *rw55) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw55) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw55) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw55) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw55) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw55) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw55) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw55) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw55) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 57/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner
+type rw56 rwState
+
+func (w *rw56) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw56) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw56) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw56) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw56) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw56) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw56) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw56) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 58/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw57 rwState
+
+func (w *rw57) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw57) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw57) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw57) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw57) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw57) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw57) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw57) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw57) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 59/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw58 rwState
+
+func (w *rw58) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw58) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw58) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw58) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw58) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw58) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw58) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw58) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw58) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 60/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw59 rwState
+
+func (w *rw59) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw59) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw59) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw59) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw59) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw59) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw59) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw59) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw59) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw59) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 61/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw60 rwState
+
+func (w *rw60) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw60) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw60) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw60) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw60) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw60) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw60) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw60) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw60) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 62/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw61 rwState
+
+func (w *rw61) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw61) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw61) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw61) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw61) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw61) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw61) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw61) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw61) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw61) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 63/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw62 rwState
+
+func (w *rw62) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw62) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw62) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw62) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw62) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw62) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw62) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw62) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw62) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw62) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 64/512: http.ResponseWriter, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw63 rwState
+
+func (w *rw63) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw63) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw63) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw63) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw63) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw63) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw63) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw63) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw63) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw63) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw63) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 65/512: http.ResponseWriter, http.CloseNotifier
+type rw64 rwState
+
+func (w *rw64) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw64) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw64) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw64) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw64) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+
+// combination 66/512: http.ResponseWriter, http.CloseNotifier, io.StringWriter
+type rw65 rwState
+
+func (w *rw65) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw65) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw65) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw65) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw65) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw65) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 67/512: http.ResponseWriter, http.CloseNotifier, http.Pusher
+type rw66 rwState
+
+func (w *rw66) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw66) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw66) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw66) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw66) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw66) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 68/512: http.ResponseWriter, http.CloseNotifier, http.Pusher, io.StringWriter
+type rw67 rwState
+
+func (w *rw67) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw67) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw67) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw67) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw67) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw67) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw67) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 69/512: http.ResponseWriter, http.CloseNotifier, fullDuplexEnabler
+type rw68 rwState
+
+func (w *rw68) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw68) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw68) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw68) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw68) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw68) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 70/512: http.ResponseWriter, http.CloseNotifier, fullDuplexEnabler, io.StringWriter
+type rw69 rwState
+
+func (w *rw69) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw69) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw69) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw69) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw69) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw69) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw69) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 71/512: http.ResponseWriter, http.CloseNotifier, fullDuplexEnabler, http.Pusher
+type rw70 rwState
+
+func (w *rw70) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw70) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw70) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw70) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw70) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw70) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw70) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 72/512: http.ResponseWriter, http.CloseNotifier, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw71 rwState
+
+func (w *rw71) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw71) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw71) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw71) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw71) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw71) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw71) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw71) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 73/512: http.ResponseWriter, http.CloseNotifier, deadliner
+type rw72 rwState
+
+func (w *rw72) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw72) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw72) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw72) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw72) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw72) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw72) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 74/512: http.ResponseWriter, http.CloseNotifier, deadliner, io.StringWriter
+type rw73 rwState
+
+func (w *rw73) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw73) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw73) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw73) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw73) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw73) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw73) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw73) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 75/512: http.ResponseWriter, http.CloseNotifier, deadliner, http.Pusher
+type rw74 rwState
+
+func (w *rw74) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw74) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw74) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw74) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw74) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw74) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw74) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw74) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 76/512: http.ResponseWriter, http.CloseNotifier, deadliner, http.Pusher, io.StringWriter
+type rw75 rwState
+
+func (w *rw75) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw75) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw75) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw75) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw75) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw75) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw75) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw75) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw75) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 77/512: http.ResponseWriter, http.CloseNotifier, deadliner, fullDuplexEnabler
+type rw76 rwState
+
+func (w *rw76) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw76) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw76) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw76) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw76) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw76) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw76) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw76) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 78/512: http.ResponseWriter, http.CloseNotifier, deadliner, fullDuplexEnabler, io.StringWriter
+type rw77 rwState
+
+func (w *rw77) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw77) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw77) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw77) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw77) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw77) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw77) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw77) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw77) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 79/512: http.ResponseWriter, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher
+type rw78 rwState
+
+func (w *rw78) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw78) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw78) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw78) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw78) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw78) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw78) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw78) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw78) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 80/512: http.ResponseWriter, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw79 rwState
+
+func (w *rw79) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw79) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw79) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw79) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw79) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw79) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw79) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw79) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw79) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw79) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 81/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom
+type rw80 rwState
+
+func (w *rw80) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw80) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw80) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw80) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw80) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw80) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 82/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, io.StringWriter
+type rw81 rwState
+
+func (w *rw81) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw81) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw81) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw81) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw81) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw81) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw81) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 83/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, http.Pusher
+type rw82 rwState
+
+func (w *rw82) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw82) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw82) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw82) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw82) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw82) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw82) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 84/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw83 rwState
+
+func (w *rw83) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw83) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw83) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw83) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw83) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw83) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw83) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw83) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 85/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler
+type rw84 rwState
+
+func (w *rw84) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw84) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw84) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw84) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw84) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw84) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw84) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 86/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw85 rwState
+
+func (w *rw85) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw85) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw85) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw85) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw85) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw85) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw85) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw85) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 87/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw86 rwState
+
+func (w *rw86) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw86) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw86) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw86) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw86) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw86) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw86) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw86) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 88/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw87 rwState
+
+func (w *rw87) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw87) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw87) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw87) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw87) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw87) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw87) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw87) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw87) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 89/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner
+type rw88 rwState
+
+func (w *rw88) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw88) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw88) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw88) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw88) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw88) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw88) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw88) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 90/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, io.StringWriter
+type rw89 rwState
+
+func (w *rw89) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw89) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw89) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw89) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw89) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw89) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw89) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw89) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw89) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 91/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher
+type rw90 rwState
+
+func (w *rw90) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw90) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw90) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw90) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw90) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw90) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw90) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw90) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw90) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 92/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw91 rwState
+
+func (w *rw91) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw91) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw91) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw91) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw91) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw91) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw91) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw91) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw91) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw91) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 93/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw92 rwState
+
+func (w *rw92) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw92) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw92) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw92) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw92) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw92) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw92) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw92) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw92) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 94/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw93 rwState
+
+func (w *rw93) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw93) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw93) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw93) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw93) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw93) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw93) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw93) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw93) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw93) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 95/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw94 rwState
+
+func (w *rw94) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw94) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw94) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw94) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw94) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw94) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw94) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw94) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw94) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw94) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 96/512: http.ResponseWriter, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw95 rwState
+
+func (w *rw95) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw95) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw95) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw95) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw95) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw95) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw95) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw95) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw95) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw95) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw95) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 97/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker
+type rw96 rwState
+
+func (w *rw96) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw96) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw96) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw96) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw96) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw96) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 98/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.StringWriter
+type rw97 rwState
+
+func (w *rw97) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw97) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw97) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw97) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw97) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw97) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw97) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 99/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, http.Pusher
+type rw98 rwState
+
+func (w *rw98) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw98) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw98) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw98) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw98) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw98) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw98) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 100/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, http.Pusher, io.StringWriter
+type rw99 rwState
+
+func (w *rw99) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw99) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw99) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw99) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw99) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw99) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw99) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw99) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 101/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, fullDuplexEnabler
+type rw100 rwState
+
+func (w *rw100) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw100) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw100) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw100) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw100) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw100) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw100) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 102/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw101 rwState
+
+func (w *rw101) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw101) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw101) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw101) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw101) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw101) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw101) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw101) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 103/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw102 rwState
+
+func (w *rw102) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw102) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw102) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw102) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw102) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw102) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw102) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw102) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 104/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw103 rwState
+
+func (w *rw103) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw103) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw103) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw103) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw103) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw103) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw103) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw103) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw103) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 105/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner
+type rw104 rwState
+
+func (w *rw104) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw104) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw104) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw104) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw104) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw104) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw104) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw104) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 106/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, io.StringWriter
+type rw105 rwState
+
+func (w *rw105) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw105) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw105) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw105) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw105) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw105) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw105) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw105) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw105) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 107/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher
+type rw106 rwState
+
+func (w *rw106) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw106) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw106) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw106) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw106) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw106) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw106) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw106) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw106) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 108/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw107 rwState
+
+func (w *rw107) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw107) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw107) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw107) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw107) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw107) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw107) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw107) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw107) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw107) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 109/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler
+type rw108 rwState
+
+func (w *rw108) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw108) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw108) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw108) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw108) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw108) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw108) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw108) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw108) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 110/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw109 rwState
+
+func (w *rw109) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw109) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw109) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw109) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw109) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw109) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw109) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw109) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw109) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw109) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 111/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw110 rwState
+
+func (w *rw110) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw110) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw110) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw110) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw110) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw110) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw110) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw110) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw110) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw110) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 112/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw111 rwState
+
+func (w *rw111) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw111) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw111) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw111) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw111) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw111) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw111) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw111) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw111) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw111) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw111) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 113/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom
+type rw112 rwState
+
+func (w *rw112) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw112) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw112) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw112) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw112) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw112) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw112) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 114/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw113 rwState
+
+func (w *rw113) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw113) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw113) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw113) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw113) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw113) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw113) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw113) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 115/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw114 rwState
+
+func (w *rw114) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw114) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw114) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw114) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw114) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw114) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw114) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw114) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 116/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw115 rwState
+
+func (w *rw115) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw115) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw115) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw115) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw115) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw115) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw115) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw115) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw115) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 117/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw116 rwState
+
+func (w *rw116) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw116) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw116) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw116) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw116) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw116) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw116) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw116) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 118/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw117 rwState
+
+func (w *rw117) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw117) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw117) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw117) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw117) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw117) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw117) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw117) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw117) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 119/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw118 rwState
+
+func (w *rw118) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw118) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw118) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw118) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw118) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw118) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw118) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw118) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw118) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 120/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw119 rwState
+
+func (w *rw119) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw119) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw119) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw119) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw119) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw119) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw119) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw119) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw119) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw119) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 121/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner
+type rw120 rwState
+
+func (w *rw120) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw120) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw120) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw120) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw120) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw120) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw120) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw120) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw120) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 122/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw121 rwState
+
+func (w *rw121) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw121) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw121) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw121) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw121) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw121) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw121) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw121) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw121) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw121) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 123/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw122 rwState
+
+func (w *rw122) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw122) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw122) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw122) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw122) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw122) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw122) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw122) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw122) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw122) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 124/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw123 rwState
+
+func (w *rw123) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw123) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw123) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw123) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw123) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw123) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw123) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw123) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw123) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw123) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw123) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 125/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw124 rwState
+
+func (w *rw124) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw124) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw124) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw124) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw124) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw124) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw124) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw124) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw124) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw124) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 126/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw125 rwState
+
+func (w *rw125) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw125) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw125) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw125) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw125) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw125) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw125) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw125) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw125) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw125) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw125) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 127/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw126 rwState
+
+func (w *rw126) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw126) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw126) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw126) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw126) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw126) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw126) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw126) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw126) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw126) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw126) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 128/512: http.ResponseWriter, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw127 rwState
+
+func (w *rw127) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw127) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw127) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw127) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw127) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw127) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw127) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw127) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw127) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw127) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw127) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw127) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 129/512: http.ResponseWriter, httpFlushError
+type rw128 rwState
+
+func (w *rw128) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw128) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw128) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw128) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw128) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+
+// combination 130/512: http.ResponseWriter, httpFlushError, io.StringWriter
+type rw129 rwState
+
+func (w *rw129) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw129) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw129) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw129) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw129) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw129) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 131/512: http.ResponseWriter, httpFlushError, http.Pusher
+type rw130 rwState
+
+func (w *rw130) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw130) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw130) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw130) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw130) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw130) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 132/512: http.ResponseWriter, httpFlushError, http.Pusher, io.StringWriter
+type rw131 rwState
+
+func (w *rw131) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw131) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw131) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw131) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw131) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw131) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw131) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 133/512: http.ResponseWriter, httpFlushError, fullDuplexEnabler
+type rw132 rwState
+
+func (w *rw132) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw132) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw132) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw132) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw132) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw132) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 134/512: http.ResponseWriter, httpFlushError, fullDuplexEnabler, io.StringWriter
+type rw133 rwState
+
+func (w *rw133) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw133) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw133) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw133) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw133) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw133) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw133) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 135/512: http.ResponseWriter, httpFlushError, fullDuplexEnabler, http.Pusher
+type rw134 rwState
+
+func (w *rw134) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw134) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw134) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw134) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw134) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw134) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw134) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 136/512: http.ResponseWriter, httpFlushError, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw135 rwState
+
+func (w *rw135) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw135) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw135) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw135) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw135) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw135) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw135) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw135) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 137/512: http.ResponseWriter, httpFlushError, deadliner
+type rw136 rwState
+
+func (w *rw136) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw136) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw136) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw136) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw136) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw136) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw136) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 138/512: http.ResponseWriter, httpFlushError, deadliner, io.StringWriter
+type rw137 rwState
+
+func (w *rw137) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw137) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw137) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw137) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw137) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw137) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw137) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw137) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 139/512: http.ResponseWriter, httpFlushError, deadliner, http.Pusher
+type rw138 rwState
+
+func (w *rw138) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw138) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw138) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw138) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw138) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw138) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw138) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw138) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 140/512: http.ResponseWriter, httpFlushError, deadliner, http.Pusher, io.StringWriter
+type rw139 rwState
+
+func (w *rw139) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw139) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw139) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw139) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw139) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw139) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw139) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw139) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw139) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 141/512: http.ResponseWriter, httpFlushError, deadliner, fullDuplexEnabler
+type rw140 rwState
+
+func (w *rw140) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw140) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw140) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw140) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw140) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw140) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw140) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw140) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 142/512: http.ResponseWriter, httpFlushError, deadliner, fullDuplexEnabler, io.StringWriter
+type rw141 rwState
+
+func (w *rw141) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw141) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw141) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw141) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw141) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw141) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw141) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw141) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw141) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 143/512: http.ResponseWriter, httpFlushError, deadliner, fullDuplexEnabler, http.Pusher
+type rw142 rwState
+
+func (w *rw142) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw142) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw142) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw142) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw142) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw142) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw142) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw142) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw142) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 144/512: http.ResponseWriter, httpFlushError, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw143 rwState
+
+func (w *rw143) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw143) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw143) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw143) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw143) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw143) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw143) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw143) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw143) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw143) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 145/512: http.ResponseWriter, httpFlushError, io.ReaderFrom
+type rw144 rwState
+
+func (w *rw144) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw144) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw144) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw144) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw144) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw144) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 146/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, io.StringWriter
+type rw145 rwState
+
+func (w *rw145) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw145) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw145) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw145) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw145) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw145) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw145) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 147/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, http.Pusher
+type rw146 rwState
+
+func (w *rw146) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw146) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw146) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw146) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw146) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw146) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw146) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 148/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw147 rwState
+
+func (w *rw147) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw147) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw147) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw147) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw147) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw147) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw147) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw147) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 149/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, fullDuplexEnabler
+type rw148 rwState
+
+func (w *rw148) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw148) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw148) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw148) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw148) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw148) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw148) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 150/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw149 rwState
+
+func (w *rw149) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw149) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw149) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw149) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw149) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw149) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw149) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw149) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 151/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw150 rwState
+
+func (w *rw150) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw150) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw150) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw150) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw150) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw150) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw150) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw150) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 152/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw151 rwState
+
+func (w *rw151) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw151) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw151) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw151) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw151) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw151) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw151) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw151) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw151) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 153/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner
+type rw152 rwState
+
+func (w *rw152) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw152) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw152) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw152) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw152) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw152) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw152) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw152) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 154/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, io.StringWriter
+type rw153 rwState
+
+func (w *rw153) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw153) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw153) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw153) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw153) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw153) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw153) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw153) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw153) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 155/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, http.Pusher
+type rw154 rwState
+
+func (w *rw154) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw154) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw154) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw154) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw154) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw154) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw154) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw154) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw154) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 156/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw155 rwState
+
+func (w *rw155) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw155) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw155) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw155) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw155) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw155) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw155) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw155) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw155) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw155) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 157/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw156 rwState
+
+func (w *rw156) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw156) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw156) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw156) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw156) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw156) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw156) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw156) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw156) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 158/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw157 rwState
+
+func (w *rw157) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw157) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw157) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw157) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw157) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw157) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw157) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw157) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw157) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw157) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 159/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw158 rwState
+
+func (w *rw158) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw158) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw158) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw158) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw158) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw158) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw158) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw158) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw158) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw158) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 160/512: http.ResponseWriter, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw159 rwState
+
+func (w *rw159) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw159) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw159) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw159) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw159) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw159) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw159) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw159) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw159) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw159) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw159) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 161/512: http.ResponseWriter, httpFlushError, http.Hijacker
+type rw160 rwState
+
+func (w *rw160) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw160) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw160) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw160) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw160) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw160) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 162/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.StringWriter
+type rw161 rwState
+
+func (w *rw161) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw161) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw161) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw161) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw161) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw161) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw161) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 163/512: http.ResponseWriter, httpFlushError, http.Hijacker, http.Pusher
+type rw162 rwState
+
+func (w *rw162) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw162) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw162) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw162) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw162) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw162) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw162) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 164/512: http.ResponseWriter, httpFlushError, http.Hijacker, http.Pusher, io.StringWriter
+type rw163 rwState
+
+func (w *rw163) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw163) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw163) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw163) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw163) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw163) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw163) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw163) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 165/512: http.ResponseWriter, httpFlushError, http.Hijacker, fullDuplexEnabler
+type rw164 rwState
+
+func (w *rw164) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw164) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw164) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw164) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw164) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw164) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw164) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 166/512: http.ResponseWriter, httpFlushError, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw165 rwState
+
+func (w *rw165) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw165) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw165) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw165) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw165) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw165) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw165) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw165) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 167/512: http.ResponseWriter, httpFlushError, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw166 rwState
+
+func (w *rw166) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw166) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw166) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw166) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw166) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw166) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw166) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw166) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 168/512: http.ResponseWriter, httpFlushError, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw167 rwState
+
+func (w *rw167) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw167) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw167) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw167) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw167) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw167) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw167) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw167) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw167) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 169/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner
+type rw168 rwState
+
+func (w *rw168) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw168) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw168) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw168) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw168) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw168) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw168) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw168) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 170/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, io.StringWriter
+type rw169 rwState
+
+func (w *rw169) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw169) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw169) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw169) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw169) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw169) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw169) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw169) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw169) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 171/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, http.Pusher
+type rw170 rwState
+
+func (w *rw170) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw170) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw170) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw170) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw170) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw170) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw170) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw170) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw170) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 172/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw171 rwState
+
+func (w *rw171) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw171) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw171) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw171) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw171) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw171) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw171) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw171) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw171) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw171) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 173/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler
+type rw172 rwState
+
+func (w *rw172) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw172) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw172) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw172) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw172) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw172) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw172) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw172) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw172) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 174/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw173 rwState
+
+func (w *rw173) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw173) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw173) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw173) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw173) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw173) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw173) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw173) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw173) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw173) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 175/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw174 rwState
+
+func (w *rw174) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw174) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw174) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw174) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw174) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw174) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw174) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw174) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw174) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw174) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 176/512: http.ResponseWriter, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw175 rwState
+
+func (w *rw175) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw175) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw175) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw175) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw175) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw175) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw175) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw175) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw175) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw175) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw175) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 177/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom
+type rw176 rwState
+
+func (w *rw176) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw176) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw176) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw176) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw176) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw176) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw176) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 178/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw177 rwState
+
+func (w *rw177) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw177) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw177) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw177) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw177) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw177) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw177) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw177) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 179/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw178 rwState
+
+func (w *rw178) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw178) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw178) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw178) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw178) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw178) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw178) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw178) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 180/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw179 rwState
+
+func (w *rw179) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw179) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw179) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw179) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw179) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw179) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw179) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw179) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw179) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 181/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw180 rwState
+
+func (w *rw180) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw180) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw180) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw180) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw180) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw180) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw180) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw180) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 182/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw181 rwState
+
+func (w *rw181) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw181) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw181) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw181) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw181) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw181) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw181) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw181) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw181) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 183/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw182 rwState
+
+func (w *rw182) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw182) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw182) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw182) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw182) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw182) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw182) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw182) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw182) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 184/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw183 rwState
+
+func (w *rw183) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw183) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw183) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw183) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw183) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw183) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw183) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw183) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw183) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw183) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 185/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner
+type rw184 rwState
+
+func (w *rw184) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw184) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw184) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw184) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw184) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw184) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw184) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw184) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw184) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 186/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw185 rwState
+
+func (w *rw185) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw185) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw185) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw185) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw185) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw185) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw185) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw185) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw185) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw185) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 187/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw186 rwState
+
+func (w *rw186) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw186) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw186) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw186) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw186) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw186) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw186) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw186) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw186) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw186) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 188/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw187 rwState
+
+func (w *rw187) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw187) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw187) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw187) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw187) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw187) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw187) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw187) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw187) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw187) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw187) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 189/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw188 rwState
+
+func (w *rw188) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw188) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw188) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw188) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw188) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw188) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw188) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw188) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw188) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw188) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 190/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw189 rwState
+
+func (w *rw189) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw189) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw189) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw189) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw189) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw189) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw189) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw189) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw189) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw189) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw189) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 191/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw190 rwState
+
+func (w *rw190) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw190) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw190) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw190) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw190) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw190) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw190) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw190) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw190) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw190) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw190) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 192/512: http.ResponseWriter, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw191 rwState
+
+func (w *rw191) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw191) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw191) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw191) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw191) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw191) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw191) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw191) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw191) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw191) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw191) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw191) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 193/512: http.ResponseWriter, httpFlushError, http.CloseNotifier
+type rw192 rwState
+
+func (w *rw192) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw192) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw192) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw192) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw192) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw192) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+
+// combination 194/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.StringWriter
+type rw193 rwState
+
+func (w *rw193) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw193) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw193) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw193) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw193) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw193) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw193) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 195/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Pusher
+type rw194 rwState
+
+func (w *rw194) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw194) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw194) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw194) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw194) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw194) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw194) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 196/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Pusher, io.StringWriter
+type rw195 rwState
+
+func (w *rw195) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw195) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw195) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw195) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw195) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw195) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw195) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw195) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 197/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, fullDuplexEnabler
+type rw196 rwState
+
+func (w *rw196) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw196) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw196) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw196) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw196) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw196) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw196) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 198/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, fullDuplexEnabler, io.StringWriter
+type rw197 rwState
+
+func (w *rw197) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw197) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw197) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw197) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw197) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw197) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw197) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw197) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 199/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, fullDuplexEnabler, http.Pusher
+type rw198 rwState
+
+func (w *rw198) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw198) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw198) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw198) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw198) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw198) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw198) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw198) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 200/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw199 rwState
+
+func (w *rw199) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw199) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw199) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw199) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw199) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw199) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw199) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw199) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw199) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 201/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner
+type rw200 rwState
+
+func (w *rw200) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw200) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw200) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw200) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw200) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw200) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw200) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw200) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 202/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, io.StringWriter
+type rw201 rwState
+
+func (w *rw201) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw201) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw201) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw201) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw201) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw201) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw201) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw201) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw201) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 203/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, http.Pusher
+type rw202 rwState
+
+func (w *rw202) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw202) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw202) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw202) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw202) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw202) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw202) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw202) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw202) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 204/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, http.Pusher, io.StringWriter
+type rw203 rwState
+
+func (w *rw203) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw203) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw203) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw203) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw203) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw203) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw203) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw203) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw203) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw203) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 205/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler
+type rw204 rwState
+
+func (w *rw204) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw204) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw204) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw204) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw204) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw204) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw204) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw204) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw204) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 206/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, io.StringWriter
+type rw205 rwState
+
+func (w *rw205) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw205) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw205) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw205) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw205) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw205) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw205) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw205) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw205) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw205) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 207/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher
+type rw206 rwState
+
+func (w *rw206) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw206) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw206) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw206) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw206) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw206) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw206) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw206) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw206) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw206) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 208/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw207 rwState
+
+func (w *rw207) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw207) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw207) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw207) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw207) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw207) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw207) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw207) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw207) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw207) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw207) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 209/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom
+type rw208 rwState
+
+func (w *rw208) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw208) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw208) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw208) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw208) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw208) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw208) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 210/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, io.StringWriter
+type rw209 rwState
+
+func (w *rw209) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw209) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw209) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw209) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw209) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw209) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw209) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw209) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 211/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, http.Pusher
+type rw210 rwState
+
+func (w *rw210) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw210) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw210) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw210) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw210) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw210) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw210) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw210) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 212/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw211 rwState
+
+func (w *rw211) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw211) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw211) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw211) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw211) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw211) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw211) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw211) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw211) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 213/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler
+type rw212 rwState
+
+func (w *rw212) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw212) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw212) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw212) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw212) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw212) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw212) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw212) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 214/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw213 rwState
+
+func (w *rw213) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw213) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw213) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw213) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw213) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw213) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw213) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw213) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw213) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 215/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw214 rwState
+
+func (w *rw214) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw214) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw214) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw214) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw214) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw214) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw214) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw214) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw214) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 216/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw215 rwState
+
+func (w *rw215) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw215) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw215) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw215) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw215) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw215) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw215) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw215) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw215) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw215) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 217/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner
+type rw216 rwState
+
+func (w *rw216) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw216) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw216) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw216) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw216) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw216) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw216) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw216) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw216) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 218/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, io.StringWriter
+type rw217 rwState
+
+func (w *rw217) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw217) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw217) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw217) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw217) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw217) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw217) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw217) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw217) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw217) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 219/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher
+type rw218 rwState
+
+func (w *rw218) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw218) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw218) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw218) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw218) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw218) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw218) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw218) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw218) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw218) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 220/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw219 rwState
+
+func (w *rw219) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw219) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw219) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw219) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw219) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw219) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw219) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw219) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw219) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw219) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw219) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 221/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw220 rwState
+
+func (w *rw220) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw220) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw220) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw220) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw220) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw220) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw220) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw220) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw220) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw220) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 222/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw221 rwState
+
+func (w *rw221) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw221) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw221) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw221) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw221) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw221) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw221) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw221) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw221) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw221) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw221) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 223/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw222 rwState
+
+func (w *rw222) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw222) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw222) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw222) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw222) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw222) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw222) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw222) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw222) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw222) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw222) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 224/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw223 rwState
+
+func (w *rw223) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw223) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw223) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw223) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw223) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw223) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw223) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw223) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw223) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw223) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw223) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw223) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 225/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker
+type rw224 rwState
+
+func (w *rw224) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw224) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw224) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw224) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw224) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw224) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw224) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 226/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.StringWriter
+type rw225 rwState
+
+func (w *rw225) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw225) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw225) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw225) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw225) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw225) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw225) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw225) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 227/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, http.Pusher
+type rw226 rwState
+
+func (w *rw226) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw226) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw226) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw226) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw226) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw226) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw226) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw226) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 228/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, http.Pusher, io.StringWriter
+type rw227 rwState
+
+func (w *rw227) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw227) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw227) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw227) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw227) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw227) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw227) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw227) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw227) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 229/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler
+type rw228 rwState
+
+func (w *rw228) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw228) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw228) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw228) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw228) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw228) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw228) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw228) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 230/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw229 rwState
+
+func (w *rw229) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw229) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw229) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw229) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw229) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw229) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw229) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw229) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw229) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 231/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw230 rwState
+
+func (w *rw230) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw230) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw230) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw230) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw230) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw230) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw230) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw230) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw230) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 232/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw231 rwState
+
+func (w *rw231) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw231) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw231) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw231) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw231) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw231) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw231) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw231) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw231) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw231) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 233/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner
+type rw232 rwState
+
+func (w *rw232) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw232) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw232) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw232) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw232) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw232) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw232) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw232) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw232) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 234/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, io.StringWriter
+type rw233 rwState
+
+func (w *rw233) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw233) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw233) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw233) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw233) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw233) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw233) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw233) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw233) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw233) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 235/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher
+type rw234 rwState
+
+func (w *rw234) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw234) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw234) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw234) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw234) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw234) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw234) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw234) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw234) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw234) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 236/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw235 rwState
+
+func (w *rw235) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw235) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw235) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw235) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw235) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw235) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw235) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw235) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw235) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw235) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw235) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 237/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler
+type rw236 rwState
+
+func (w *rw236) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw236) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw236) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw236) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw236) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw236) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw236) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw236) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw236) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw236) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 238/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw237 rwState
+
+func (w *rw237) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw237) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw237) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw237) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw237) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw237) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw237) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw237) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw237) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw237) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw237) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 239/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw238 rwState
+
+func (w *rw238) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw238) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw238) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw238) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw238) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw238) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw238) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw238) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw238) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw238) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw238) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 240/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw239 rwState
+
+func (w *rw239) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw239) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw239) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw239) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw239) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw239) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw239) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw239) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw239) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw239) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw239) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw239) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 241/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom
+type rw240 rwState
+
+func (w *rw240) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw240) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw240) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw240) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw240) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw240) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw240) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw240) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 242/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw241 rwState
+
+func (w *rw241) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw241) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw241) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw241) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw241) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw241) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw241) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw241) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw241) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 243/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw242 rwState
+
+func (w *rw242) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw242) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw242) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw242) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw242) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw242) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw242) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw242) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw242) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 244/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw243 rwState
+
+func (w *rw243) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw243) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw243) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw243) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw243) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw243) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw243) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw243) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw243) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw243) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 245/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw244 rwState
+
+func (w *rw244) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw244) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw244) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw244) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw244) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw244) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw244) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw244) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw244) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 246/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw245 rwState
+
+func (w *rw245) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw245) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw245) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw245) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw245) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw245) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw245) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw245) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw245) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw245) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 247/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw246 rwState
+
+func (w *rw246) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw246) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw246) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw246) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw246) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw246) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw246) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw246) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw246) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw246) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 248/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw247 rwState
+
+func (w *rw247) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw247) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw247) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw247) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw247) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw247) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw247) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw247) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw247) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw247) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw247) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 249/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner
+type rw248 rwState
+
+func (w *rw248) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw248) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw248) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw248) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw248) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw248) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw248) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw248) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw248) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw248) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 250/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw249 rwState
+
+func (w *rw249) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw249) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw249) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw249) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw249) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw249) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw249) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw249) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw249) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw249) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw249) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 251/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw250 rwState
+
+func (w *rw250) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw250) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw250) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw250) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw250) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw250) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw250) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw250) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw250) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw250) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw250) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 252/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw251 rwState
+
+func (w *rw251) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw251) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw251) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw251) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw251) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw251) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw251) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw251) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw251) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw251) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw251) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw251) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 253/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw252 rwState
+
+func (w *rw252) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw252) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw252) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw252) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw252) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw252) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw252) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw252) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw252) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw252) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw252) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 254/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw253 rwState
+
+func (w *rw253) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw253) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw253) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw253) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw253) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw253) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw253) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw253) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw253) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw253) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw253) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw253) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 255/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw254 rwState
+
+func (w *rw254) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw254) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw254) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw254) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw254) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw254) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw254) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw254) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw254) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw254) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw254) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw254) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 256/512: http.ResponseWriter, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw255 rwState
+
+func (w *rw255) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw255) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw255) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw255) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw255) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw255) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw255) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw255) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw255) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw255) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw255) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw255) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw255) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 257/512: http.ResponseWriter, http.Flusher
+type rw256 rwState
+
+func (w *rw256) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw256) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw256) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw256) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw256) Flush() {
+ (*rwState)(w).doFlush()
+}
+
+// combination 258/512: http.ResponseWriter, http.Flusher, io.StringWriter
+type rw257 rwState
+
+func (w *rw257) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw257) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw257) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw257) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw257) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw257) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 259/512: http.ResponseWriter, http.Flusher, http.Pusher
+type rw258 rwState
+
+func (w *rw258) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw258) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw258) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw258) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw258) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw258) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 260/512: http.ResponseWriter, http.Flusher, http.Pusher, io.StringWriter
+type rw259 rwState
+
+func (w *rw259) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw259) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw259) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw259) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw259) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw259) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw259) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 261/512: http.ResponseWriter, http.Flusher, fullDuplexEnabler
+type rw260 rwState
+
+func (w *rw260) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw260) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw260) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw260) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw260) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw260) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 262/512: http.ResponseWriter, http.Flusher, fullDuplexEnabler, io.StringWriter
+type rw261 rwState
+
+func (w *rw261) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw261) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw261) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw261) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw261) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw261) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw261) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 263/512: http.ResponseWriter, http.Flusher, fullDuplexEnabler, http.Pusher
+type rw262 rwState
+
+func (w *rw262) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw262) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw262) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw262) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw262) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw262) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw262) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 264/512: http.ResponseWriter, http.Flusher, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw263 rwState
+
+func (w *rw263) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw263) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw263) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw263) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw263) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw263) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw263) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw263) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 265/512: http.ResponseWriter, http.Flusher, deadliner
+type rw264 rwState
+
+func (w *rw264) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw264) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw264) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw264) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw264) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw264) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw264) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 266/512: http.ResponseWriter, http.Flusher, deadliner, io.StringWriter
+type rw265 rwState
+
+func (w *rw265) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw265) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw265) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw265) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw265) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw265) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw265) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw265) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 267/512: http.ResponseWriter, http.Flusher, deadliner, http.Pusher
+type rw266 rwState
+
+func (w *rw266) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw266) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw266) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw266) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw266) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw266) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw266) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw266) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 268/512: http.ResponseWriter, http.Flusher, deadliner, http.Pusher, io.StringWriter
+type rw267 rwState
+
+func (w *rw267) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw267) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw267) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw267) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw267) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw267) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw267) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw267) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw267) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 269/512: http.ResponseWriter, http.Flusher, deadliner, fullDuplexEnabler
+type rw268 rwState
+
+func (w *rw268) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw268) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw268) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw268) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw268) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw268) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw268) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw268) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 270/512: http.ResponseWriter, http.Flusher, deadliner, fullDuplexEnabler, io.StringWriter
+type rw269 rwState
+
+func (w *rw269) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw269) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw269) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw269) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw269) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw269) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw269) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw269) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw269) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 271/512: http.ResponseWriter, http.Flusher, deadliner, fullDuplexEnabler, http.Pusher
+type rw270 rwState
+
+func (w *rw270) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw270) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw270) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw270) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw270) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw270) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw270) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw270) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw270) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 272/512: http.ResponseWriter, http.Flusher, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw271 rwState
+
+func (w *rw271) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw271) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw271) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw271) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw271) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw271) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw271) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw271) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw271) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw271) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 273/512: http.ResponseWriter, http.Flusher, io.ReaderFrom
+type rw272 rwState
+
+func (w *rw272) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw272) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw272) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw272) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw272) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw272) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 274/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, io.StringWriter
+type rw273 rwState
+
+func (w *rw273) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw273) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw273) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw273) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw273) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw273) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw273) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 275/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, http.Pusher
+type rw274 rwState
+
+func (w *rw274) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw274) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw274) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw274) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw274) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw274) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw274) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 276/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw275 rwState
+
+func (w *rw275) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw275) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw275) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw275) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw275) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw275) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw275) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw275) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 277/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, fullDuplexEnabler
+type rw276 rwState
+
+func (w *rw276) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw276) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw276) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw276) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw276) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw276) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw276) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 278/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw277 rwState
+
+func (w *rw277) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw277) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw277) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw277) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw277) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw277) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw277) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw277) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 279/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw278 rwState
+
+func (w *rw278) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw278) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw278) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw278) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw278) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw278) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw278) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw278) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 280/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw279 rwState
+
+func (w *rw279) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw279) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw279) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw279) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw279) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw279) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw279) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw279) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw279) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 281/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner
+type rw280 rwState
+
+func (w *rw280) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw280) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw280) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw280) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw280) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw280) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw280) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw280) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 282/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, io.StringWriter
+type rw281 rwState
+
+func (w *rw281) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw281) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw281) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw281) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw281) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw281) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw281) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw281) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw281) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 283/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, http.Pusher
+type rw282 rwState
+
+func (w *rw282) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw282) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw282) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw282) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw282) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw282) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw282) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw282) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw282) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 284/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw283 rwState
+
+func (w *rw283) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw283) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw283) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw283) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw283) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw283) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw283) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw283) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw283) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw283) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 285/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw284 rwState
+
+func (w *rw284) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw284) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw284) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw284) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw284) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw284) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw284) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw284) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw284) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 286/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw285 rwState
+
+func (w *rw285) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw285) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw285) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw285) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw285) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw285) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw285) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw285) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw285) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw285) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 287/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw286 rwState
+
+func (w *rw286) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw286) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw286) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw286) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw286) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw286) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw286) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw286) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw286) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw286) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 288/512: http.ResponseWriter, http.Flusher, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw287 rwState
+
+func (w *rw287) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw287) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw287) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw287) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw287) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw287) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw287) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw287) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw287) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw287) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw287) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 289/512: http.ResponseWriter, http.Flusher, http.Hijacker
+type rw288 rwState
+
+func (w *rw288) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw288) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw288) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw288) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw288) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw288) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 290/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.StringWriter
+type rw289 rwState
+
+func (w *rw289) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw289) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw289) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw289) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw289) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw289) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw289) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 291/512: http.ResponseWriter, http.Flusher, http.Hijacker, http.Pusher
+type rw290 rwState
+
+func (w *rw290) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw290) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw290) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw290) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw290) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw290) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw290) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 292/512: http.ResponseWriter, http.Flusher, http.Hijacker, http.Pusher, io.StringWriter
+type rw291 rwState
+
+func (w *rw291) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw291) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw291) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw291) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw291) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw291) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw291) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw291) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 293/512: http.ResponseWriter, http.Flusher, http.Hijacker, fullDuplexEnabler
+type rw292 rwState
+
+func (w *rw292) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw292) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw292) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw292) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw292) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw292) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw292) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 294/512: http.ResponseWriter, http.Flusher, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw293 rwState
+
+func (w *rw293) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw293) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw293) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw293) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw293) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw293) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw293) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw293) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 295/512: http.ResponseWriter, http.Flusher, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw294 rwState
+
+func (w *rw294) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw294) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw294) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw294) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw294) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw294) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw294) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw294) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 296/512: http.ResponseWriter, http.Flusher, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw295 rwState
+
+func (w *rw295) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw295) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw295) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw295) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw295) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw295) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw295) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw295) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw295) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 297/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner
+type rw296 rwState
+
+func (w *rw296) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw296) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw296) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw296) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw296) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw296) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw296) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw296) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 298/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, io.StringWriter
+type rw297 rwState
+
+func (w *rw297) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw297) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw297) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw297) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw297) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw297) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw297) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw297) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw297) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 299/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, http.Pusher
+type rw298 rwState
+
+func (w *rw298) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw298) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw298) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw298) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw298) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw298) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw298) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw298) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw298) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 300/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw299 rwState
+
+func (w *rw299) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw299) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw299) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw299) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw299) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw299) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw299) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw299) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw299) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw299) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 301/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, fullDuplexEnabler
+type rw300 rwState
+
+func (w *rw300) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw300) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw300) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw300) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw300) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw300) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw300) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw300) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw300) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 302/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw301 rwState
+
+func (w *rw301) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw301) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw301) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw301) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw301) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw301) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw301) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw301) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw301) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw301) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 303/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw302 rwState
+
+func (w *rw302) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw302) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw302) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw302) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw302) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw302) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw302) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw302) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw302) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw302) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 304/512: http.ResponseWriter, http.Flusher, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw303 rwState
+
+func (w *rw303) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw303) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw303) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw303) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw303) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw303) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw303) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw303) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw303) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw303) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw303) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 305/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom
+type rw304 rwState
+
+func (w *rw304) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw304) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw304) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw304) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw304) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw304) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw304) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 306/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw305 rwState
+
+func (w *rw305) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw305) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw305) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw305) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw305) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw305) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw305) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw305) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 307/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw306 rwState
+
+func (w *rw306) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw306) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw306) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw306) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw306) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw306) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw306) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw306) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 308/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw307 rwState
+
+func (w *rw307) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw307) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw307) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw307) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw307) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw307) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw307) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw307) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw307) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 309/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw308 rwState
+
+func (w *rw308) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw308) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw308) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw308) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw308) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw308) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw308) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw308) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 310/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw309 rwState
+
+func (w *rw309) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw309) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw309) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw309) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw309) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw309) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw309) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw309) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw309) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 311/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw310 rwState
+
+func (w *rw310) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw310) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw310) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw310) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw310) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw310) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw310) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw310) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw310) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 312/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw311 rwState
+
+func (w *rw311) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw311) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw311) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw311) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw311) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw311) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw311) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw311) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw311) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw311) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 313/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner
+type rw312 rwState
+
+func (w *rw312) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw312) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw312) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw312) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw312) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw312) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw312) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw312) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw312) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 314/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw313 rwState
+
+func (w *rw313) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw313) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw313) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw313) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw313) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw313) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw313) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw313) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw313) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw313) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 315/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw314 rwState
+
+func (w *rw314) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw314) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw314) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw314) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw314) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw314) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw314) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw314) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw314) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw314) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 316/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw315 rwState
+
+func (w *rw315) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw315) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw315) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw315) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw315) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw315) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw315) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw315) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw315) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw315) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw315) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 317/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw316 rwState
+
+func (w *rw316) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw316) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw316) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw316) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw316) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw316) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw316) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw316) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw316) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw316) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 318/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw317 rwState
+
+func (w *rw317) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw317) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw317) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw317) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw317) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw317) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw317) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw317) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw317) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw317) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw317) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 319/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw318 rwState
+
+func (w *rw318) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw318) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw318) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw318) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw318) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw318) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw318) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw318) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw318) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw318) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw318) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 320/512: http.ResponseWriter, http.Flusher, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw319 rwState
+
+func (w *rw319) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw319) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw319) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw319) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw319) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw319) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw319) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw319) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw319) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw319) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw319) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw319) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 321/512: http.ResponseWriter, http.Flusher, http.CloseNotifier
+type rw320 rwState
+
+func (w *rw320) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw320) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw320) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw320) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw320) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw320) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+
+// combination 322/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.StringWriter
+type rw321 rwState
+
+func (w *rw321) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw321) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw321) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw321) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw321) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw321) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw321) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 323/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Pusher
+type rw322 rwState
+
+func (w *rw322) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw322) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw322) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw322) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw322) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw322) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw322) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 324/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Pusher, io.StringWriter
+type rw323 rwState
+
+func (w *rw323) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw323) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw323) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw323) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw323) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw323) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw323) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw323) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 325/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, fullDuplexEnabler
+type rw324 rwState
+
+func (w *rw324) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw324) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw324) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw324) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw324) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw324) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw324) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 326/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, fullDuplexEnabler, io.StringWriter
+type rw325 rwState
+
+func (w *rw325) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw325) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw325) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw325) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw325) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw325) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw325) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw325) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 327/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, fullDuplexEnabler, http.Pusher
+type rw326 rwState
+
+func (w *rw326) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw326) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw326) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw326) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw326) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw326) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw326) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw326) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 328/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw327 rwState
+
+func (w *rw327) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw327) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw327) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw327) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw327) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw327) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw327) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw327) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw327) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 329/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner
+type rw328 rwState
+
+func (w *rw328) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw328) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw328) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw328) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw328) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw328) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw328) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw328) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 330/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, io.StringWriter
+type rw329 rwState
+
+func (w *rw329) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw329) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw329) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw329) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw329) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw329) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw329) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw329) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw329) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 331/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, http.Pusher
+type rw330 rwState
+
+func (w *rw330) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw330) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw330) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw330) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw330) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw330) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw330) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw330) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw330) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 332/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, http.Pusher, io.StringWriter
+type rw331 rwState
+
+func (w *rw331) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw331) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw331) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw331) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw331) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw331) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw331) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw331) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw331) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw331) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 333/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, fullDuplexEnabler
+type rw332 rwState
+
+func (w *rw332) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw332) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw332) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw332) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw332) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw332) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw332) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw332) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw332) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 334/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, fullDuplexEnabler, io.StringWriter
+type rw333 rwState
+
+func (w *rw333) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw333) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw333) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw333) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw333) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw333) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw333) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw333) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw333) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw333) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 335/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher
+type rw334 rwState
+
+func (w *rw334) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw334) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw334) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw334) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw334) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw334) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw334) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw334) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw334) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw334) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 336/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw335 rwState
+
+func (w *rw335) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw335) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw335) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw335) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw335) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw335) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw335) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw335) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw335) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw335) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw335) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 337/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom
+type rw336 rwState
+
+func (w *rw336) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw336) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw336) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw336) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw336) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw336) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw336) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 338/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, io.StringWriter
+type rw337 rwState
+
+func (w *rw337) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw337) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw337) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw337) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw337) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw337) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw337) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw337) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 339/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, http.Pusher
+type rw338 rwState
+
+func (w *rw338) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw338) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw338) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw338) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw338) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw338) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw338) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw338) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 340/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw339 rwState
+
+func (w *rw339) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw339) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw339) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw339) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw339) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw339) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw339) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw339) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw339) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 341/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler
+type rw340 rwState
+
+func (w *rw340) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw340) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw340) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw340) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw340) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw340) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw340) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw340) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 342/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw341 rwState
+
+func (w *rw341) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw341) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw341) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw341) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw341) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw341) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw341) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw341) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw341) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 343/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw342 rwState
+
+func (w *rw342) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw342) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw342) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw342) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw342) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw342) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw342) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw342) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw342) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 344/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw343 rwState
+
+func (w *rw343) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw343) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw343) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw343) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw343) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw343) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw343) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw343) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw343) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw343) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 345/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner
+type rw344 rwState
+
+func (w *rw344) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw344) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw344) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw344) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw344) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw344) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw344) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw344) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw344) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 346/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, io.StringWriter
+type rw345 rwState
+
+func (w *rw345) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw345) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw345) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw345) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw345) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw345) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw345) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw345) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw345) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw345) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 347/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher
+type rw346 rwState
+
+func (w *rw346) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw346) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw346) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw346) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw346) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw346) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw346) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw346) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw346) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw346) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 348/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw347 rwState
+
+func (w *rw347) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw347) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw347) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw347) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw347) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw347) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw347) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw347) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw347) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw347) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw347) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 349/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw348 rwState
+
+func (w *rw348) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw348) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw348) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw348) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw348) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw348) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw348) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw348) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw348) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw348) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 350/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw349 rwState
+
+func (w *rw349) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw349) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw349) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw349) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw349) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw349) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw349) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw349) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw349) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw349) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw349) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 351/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw350 rwState
+
+func (w *rw350) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw350) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw350) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw350) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw350) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw350) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw350) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw350) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw350) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw350) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw350) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 352/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw351 rwState
+
+func (w *rw351) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw351) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw351) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw351) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw351) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw351) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw351) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw351) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw351) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw351) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw351) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw351) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 353/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker
+type rw352 rwState
+
+func (w *rw352) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw352) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw352) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw352) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw352) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw352) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw352) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 354/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.StringWriter
+type rw353 rwState
+
+func (w *rw353) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw353) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw353) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw353) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw353) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw353) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw353) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw353) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 355/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, http.Pusher
+type rw354 rwState
+
+func (w *rw354) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw354) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw354) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw354) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw354) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw354) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw354) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw354) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 356/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, http.Pusher, io.StringWriter
+type rw355 rwState
+
+func (w *rw355) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw355) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw355) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw355) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw355) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw355) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw355) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw355) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw355) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 357/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, fullDuplexEnabler
+type rw356 rwState
+
+func (w *rw356) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw356) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw356) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw356) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw356) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw356) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw356) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw356) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 358/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw357 rwState
+
+func (w *rw357) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw357) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw357) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw357) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw357) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw357) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw357) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw357) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw357) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 359/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw358 rwState
+
+func (w *rw358) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw358) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw358) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw358) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw358) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw358) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw358) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw358) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw358) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 360/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw359 rwState
+
+func (w *rw359) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw359) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw359) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw359) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw359) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw359) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw359) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw359) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw359) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw359) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 361/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner
+type rw360 rwState
+
+func (w *rw360) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw360) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw360) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw360) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw360) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw360) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw360) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw360) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw360) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 362/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, io.StringWriter
+type rw361 rwState
+
+func (w *rw361) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw361) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw361) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw361) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw361) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw361) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw361) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw361) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw361) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw361) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 363/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher
+type rw362 rwState
+
+func (w *rw362) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw362) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw362) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw362) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw362) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw362) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw362) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw362) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw362) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw362) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 364/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw363 rwState
+
+func (w *rw363) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw363) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw363) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw363) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw363) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw363) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw363) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw363) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw363) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw363) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw363) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 365/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler
+type rw364 rwState
+
+func (w *rw364) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw364) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw364) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw364) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw364) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw364) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw364) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw364) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw364) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw364) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 366/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw365 rwState
+
+func (w *rw365) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw365) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw365) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw365) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw365) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw365) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw365) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw365) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw365) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw365) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw365) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 367/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw366 rwState
+
+func (w *rw366) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw366) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw366) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw366) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw366) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw366) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw366) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw366) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw366) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw366) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw366) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 368/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw367 rwState
+
+func (w *rw367) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw367) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw367) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw367) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw367) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw367) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw367) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw367) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw367) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw367) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw367) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw367) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 369/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom
+type rw368 rwState
+
+func (w *rw368) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw368) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw368) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw368) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw368) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw368) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw368) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw368) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 370/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw369 rwState
+
+func (w *rw369) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw369) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw369) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw369) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw369) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw369) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw369) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw369) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw369) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 371/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw370 rwState
+
+func (w *rw370) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw370) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw370) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw370) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw370) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw370) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw370) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw370) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw370) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 372/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw371 rwState
+
+func (w *rw371) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw371) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw371) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw371) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw371) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw371) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw371) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw371) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw371) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw371) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 373/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw372 rwState
+
+func (w *rw372) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw372) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw372) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw372) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw372) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw372) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw372) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw372) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw372) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 374/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw373 rwState
+
+func (w *rw373) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw373) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw373) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw373) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw373) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw373) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw373) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw373) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw373) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw373) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 375/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw374 rwState
+
+func (w *rw374) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw374) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw374) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw374) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw374) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw374) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw374) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw374) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw374) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw374) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 376/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw375 rwState
+
+func (w *rw375) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw375) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw375) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw375) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw375) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw375) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw375) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw375) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw375) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw375) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw375) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 377/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner
+type rw376 rwState
+
+func (w *rw376) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw376) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw376) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw376) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw376) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw376) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw376) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw376) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw376) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw376) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 378/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw377 rwState
+
+func (w *rw377) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw377) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw377) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw377) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw377) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw377) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw377) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw377) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw377) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw377) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw377) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 379/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw378 rwState
+
+func (w *rw378) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw378) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw378) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw378) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw378) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw378) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw378) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw378) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw378) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw378) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw378) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 380/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw379 rwState
+
+func (w *rw379) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw379) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw379) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw379) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw379) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw379) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw379) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw379) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw379) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw379) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw379) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw379) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 381/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw380 rwState
+
+func (w *rw380) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw380) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw380) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw380) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw380) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw380) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw380) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw380) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw380) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw380) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw380) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 382/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw381 rwState
+
+func (w *rw381) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw381) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw381) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw381) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw381) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw381) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw381) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw381) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw381) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw381) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw381) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw381) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 383/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw382 rwState
+
+func (w *rw382) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw382) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw382) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw382) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw382) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw382) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw382) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw382) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw382) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw382) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw382) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw382) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 384/512: http.ResponseWriter, http.Flusher, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw383 rwState
+
+func (w *rw383) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw383) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw383) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw383) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw383) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw383) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw383) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw383) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw383) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw383) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw383) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw383) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw383) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 385/512: http.ResponseWriter, http.Flusher, httpFlushError
+type rw384 rwState
+
+func (w *rw384) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw384) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw384) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw384) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw384) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw384) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+
+// combination 386/512: http.ResponseWriter, http.Flusher, httpFlushError, io.StringWriter
+type rw385 rwState
+
+func (w *rw385) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw385) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw385) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw385) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw385) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw385) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw385) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 387/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Pusher
+type rw386 rwState
+
+func (w *rw386) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw386) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw386) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw386) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw386) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw386) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw386) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 388/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Pusher, io.StringWriter
+type rw387 rwState
+
+func (w *rw387) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw387) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw387) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw387) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw387) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw387) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw387) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw387) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 389/512: http.ResponseWriter, http.Flusher, httpFlushError, fullDuplexEnabler
+type rw388 rwState
+
+func (w *rw388) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw388) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw388) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw388) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw388) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw388) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw388) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 390/512: http.ResponseWriter, http.Flusher, httpFlushError, fullDuplexEnabler, io.StringWriter
+type rw389 rwState
+
+func (w *rw389) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw389) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw389) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw389) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw389) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw389) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw389) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw389) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 391/512: http.ResponseWriter, http.Flusher, httpFlushError, fullDuplexEnabler, http.Pusher
+type rw390 rwState
+
+func (w *rw390) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw390) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw390) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw390) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw390) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw390) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw390) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw390) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 392/512: http.ResponseWriter, http.Flusher, httpFlushError, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw391 rwState
+
+func (w *rw391) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw391) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw391) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw391) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw391) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw391) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw391) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw391) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw391) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 393/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner
+type rw392 rwState
+
+func (w *rw392) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw392) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw392) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw392) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw392) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw392) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw392) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw392) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 394/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, io.StringWriter
+type rw393 rwState
+
+func (w *rw393) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw393) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw393) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw393) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw393) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw393) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw393) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw393) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw393) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 395/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, http.Pusher
+type rw394 rwState
+
+func (w *rw394) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw394) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw394) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw394) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw394) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw394) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw394) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw394) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw394) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 396/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, http.Pusher, io.StringWriter
+type rw395 rwState
+
+func (w *rw395) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw395) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw395) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw395) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw395) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw395) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw395) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw395) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw395) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw395) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 397/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, fullDuplexEnabler
+type rw396 rwState
+
+func (w *rw396) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw396) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw396) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw396) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw396) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw396) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw396) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw396) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw396) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 398/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, fullDuplexEnabler, io.StringWriter
+type rw397 rwState
+
+func (w *rw397) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw397) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw397) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw397) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw397) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw397) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw397) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw397) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw397) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw397) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 399/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, fullDuplexEnabler, http.Pusher
+type rw398 rwState
+
+func (w *rw398) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw398) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw398) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw398) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw398) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw398) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw398) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw398) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw398) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw398) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 400/512: http.ResponseWriter, http.Flusher, httpFlushError, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw399 rwState
+
+func (w *rw399) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw399) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw399) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw399) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw399) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw399) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw399) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw399) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw399) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw399) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw399) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 401/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom
+type rw400 rwState
+
+func (w *rw400) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw400) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw400) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw400) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw400) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw400) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw400) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 402/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, io.StringWriter
+type rw401 rwState
+
+func (w *rw401) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw401) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw401) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw401) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw401) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw401) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw401) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw401) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 403/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, http.Pusher
+type rw402 rwState
+
+func (w *rw402) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw402) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw402) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw402) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw402) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw402) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw402) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw402) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 404/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw403 rwState
+
+func (w *rw403) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw403) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw403) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw403) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw403) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw403) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw403) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw403) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw403) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 405/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, fullDuplexEnabler
+type rw404 rwState
+
+func (w *rw404) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw404) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw404) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw404) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw404) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw404) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw404) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw404) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 406/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw405 rwState
+
+func (w *rw405) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw405) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw405) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw405) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw405) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw405) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw405) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw405) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw405) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 407/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw406 rwState
+
+func (w *rw406) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw406) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw406) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw406) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw406) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw406) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw406) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw406) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw406) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 408/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw407 rwState
+
+func (w *rw407) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw407) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw407) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw407) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw407) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw407) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw407) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw407) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw407) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw407) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 409/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner
+type rw408 rwState
+
+func (w *rw408) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw408) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw408) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw408) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw408) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw408) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw408) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw408) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw408) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 410/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, io.StringWriter
+type rw409 rwState
+
+func (w *rw409) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw409) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw409) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw409) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw409) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw409) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw409) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw409) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw409) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw409) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 411/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, http.Pusher
+type rw410 rwState
+
+func (w *rw410) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw410) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw410) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw410) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw410) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw410) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw410) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw410) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw410) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw410) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 412/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw411 rwState
+
+func (w *rw411) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw411) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw411) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw411) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw411) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw411) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw411) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw411) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw411) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw411) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw411) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 413/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw412 rwState
+
+func (w *rw412) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw412) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw412) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw412) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw412) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw412) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw412) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw412) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw412) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw412) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 414/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw413 rwState
+
+func (w *rw413) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw413) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw413) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw413) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw413) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw413) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw413) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw413) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw413) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw413) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw413) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 415/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw414 rwState
+
+func (w *rw414) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw414) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw414) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw414) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw414) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw414) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw414) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw414) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw414) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw414) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw414) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 416/512: http.ResponseWriter, http.Flusher, httpFlushError, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw415 rwState
+
+func (w *rw415) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw415) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw415) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw415) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw415) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw415) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw415) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw415) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw415) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw415) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw415) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw415) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 417/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker
+type rw416 rwState
+
+func (w *rw416) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw416) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw416) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw416) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw416) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw416) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw416) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 418/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.StringWriter
+type rw417 rwState
+
+func (w *rw417) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw417) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw417) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw417) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw417) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw417) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw417) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw417) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 419/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, http.Pusher
+type rw418 rwState
+
+func (w *rw418) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw418) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw418) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw418) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw418) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw418) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw418) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw418) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 420/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, http.Pusher, io.StringWriter
+type rw419 rwState
+
+func (w *rw419) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw419) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw419) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw419) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw419) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw419) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw419) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw419) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw419) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 421/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, fullDuplexEnabler
+type rw420 rwState
+
+func (w *rw420) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw420) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw420) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw420) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw420) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw420) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw420) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw420) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 422/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw421 rwState
+
+func (w *rw421) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw421) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw421) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw421) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw421) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw421) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw421) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw421) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw421) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 423/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw422 rwState
+
+func (w *rw422) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw422) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw422) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw422) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw422) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw422) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw422) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw422) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw422) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 424/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw423 rwState
+
+func (w *rw423) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw423) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw423) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw423) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw423) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw423) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw423) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw423) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw423) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw423) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 425/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner
+type rw424 rwState
+
+func (w *rw424) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw424) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw424) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw424) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw424) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw424) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw424) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw424) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw424) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 426/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, io.StringWriter
+type rw425 rwState
+
+func (w *rw425) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw425) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw425) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw425) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw425) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw425) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw425) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw425) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw425) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw425) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 427/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, http.Pusher
+type rw426 rwState
+
+func (w *rw426) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw426) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw426) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw426) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw426) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw426) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw426) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw426) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw426) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw426) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 428/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw427 rwState
+
+func (w *rw427) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw427) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw427) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw427) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw427) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw427) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw427) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw427) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw427) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw427) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw427) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 429/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler
+type rw428 rwState
+
+func (w *rw428) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw428) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw428) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw428) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw428) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw428) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw428) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw428) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw428) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw428) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 430/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw429 rwState
+
+func (w *rw429) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw429) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw429) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw429) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw429) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw429) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw429) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw429) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw429) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw429) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw429) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 431/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw430 rwState
+
+func (w *rw430) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw430) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw430) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw430) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw430) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw430) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw430) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw430) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw430) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw430) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw430) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 432/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw431 rwState
+
+func (w *rw431) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw431) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw431) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw431) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw431) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw431) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw431) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw431) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw431) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw431) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw431) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw431) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 433/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom
+type rw432 rwState
+
+func (w *rw432) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw432) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw432) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw432) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw432) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw432) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw432) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw432) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 434/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw433 rwState
+
+func (w *rw433) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw433) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw433) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw433) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw433) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw433) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw433) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw433) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw433) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 435/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw434 rwState
+
+func (w *rw434) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw434) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw434) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw434) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw434) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw434) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw434) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw434) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw434) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 436/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw435 rwState
+
+func (w *rw435) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw435) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw435) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw435) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw435) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw435) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw435) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw435) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw435) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw435) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 437/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw436 rwState
+
+func (w *rw436) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw436) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw436) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw436) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw436) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw436) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw436) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw436) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw436) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 438/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw437 rwState
+
+func (w *rw437) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw437) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw437) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw437) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw437) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw437) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw437) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw437) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw437) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw437) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 439/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw438 rwState
+
+func (w *rw438) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw438) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw438) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw438) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw438) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw438) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw438) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw438) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw438) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw438) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 440/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw439 rwState
+
+func (w *rw439) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw439) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw439) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw439) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw439) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw439) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw439) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw439) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw439) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw439) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw439) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 441/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner
+type rw440 rwState
+
+func (w *rw440) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw440) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw440) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw440) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw440) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw440) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw440) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw440) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw440) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw440) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 442/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw441 rwState
+
+func (w *rw441) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw441) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw441) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw441) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw441) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw441) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw441) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw441) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw441) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw441) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw441) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 443/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw442 rwState
+
+func (w *rw442) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw442) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw442) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw442) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw442) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw442) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw442) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw442) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw442) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw442) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw442) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 444/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw443 rwState
+
+func (w *rw443) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw443) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw443) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw443) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw443) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw443) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw443) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw443) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw443) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw443) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw443) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw443) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 445/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw444 rwState
+
+func (w *rw444) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw444) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw444) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw444) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw444) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw444) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw444) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw444) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw444) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw444) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw444) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 446/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw445 rwState
+
+func (w *rw445) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw445) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw445) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw445) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw445) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw445) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw445) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw445) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw445) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw445) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw445) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw445) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 447/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw446 rwState
+
+func (w *rw446) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw446) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw446) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw446) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw446) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw446) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw446) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw446) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw446) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw446) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw446) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw446) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 448/512: http.ResponseWriter, http.Flusher, httpFlushError, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw447 rwState
+
+func (w *rw447) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw447) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw447) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw447) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw447) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw447) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw447) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw447) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw447) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw447) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw447) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw447) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw447) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 449/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier
+type rw448 rwState
+
+func (w *rw448) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw448) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw448) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw448) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw448) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw448) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw448) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+
+// combination 450/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.StringWriter
+type rw449 rwState
+
+func (w *rw449) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw449) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw449) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw449) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw449) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw449) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw449) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw449) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 451/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Pusher
+type rw450 rwState
+
+func (w *rw450) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw450) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw450) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw450) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw450) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw450) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw450) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw450) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 452/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Pusher, io.StringWriter
+type rw451 rwState
+
+func (w *rw451) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw451) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw451) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw451) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw451) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw451) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw451) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw451) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw451) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 453/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, fullDuplexEnabler
+type rw452 rwState
+
+func (w *rw452) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw452) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw452) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw452) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw452) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw452) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw452) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw452) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 454/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, fullDuplexEnabler, io.StringWriter
+type rw453 rwState
+
+func (w *rw453) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw453) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw453) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw453) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw453) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw453) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw453) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw453) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw453) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 455/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, fullDuplexEnabler, http.Pusher
+type rw454 rwState
+
+func (w *rw454) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw454) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw454) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw454) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw454) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw454) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw454) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw454) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw454) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 456/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw455 rwState
+
+func (w *rw455) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw455) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw455) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw455) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw455) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw455) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw455) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw455) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw455) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw455) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 457/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner
+type rw456 rwState
+
+func (w *rw456) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw456) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw456) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw456) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw456) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw456) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw456) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw456) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw456) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 458/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, io.StringWriter
+type rw457 rwState
+
+func (w *rw457) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw457) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw457) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw457) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw457) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw457) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw457) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw457) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw457) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw457) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 459/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, http.Pusher
+type rw458 rwState
+
+func (w *rw458) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw458) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw458) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw458) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw458) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw458) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw458) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw458) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw458) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw458) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 460/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, http.Pusher, io.StringWriter
+type rw459 rwState
+
+func (w *rw459) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw459) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw459) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw459) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw459) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw459) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw459) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw459) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw459) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw459) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw459) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 461/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler
+type rw460 rwState
+
+func (w *rw460) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw460) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw460) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw460) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw460) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw460) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw460) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw460) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw460) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw460) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 462/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, io.StringWriter
+type rw461 rwState
+
+func (w *rw461) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw461) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw461) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw461) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw461) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw461) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw461) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw461) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw461) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw461) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw461) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 463/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher
+type rw462 rwState
+
+func (w *rw462) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw462) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw462) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw462) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw462) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw462) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw462) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw462) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw462) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw462) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw462) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 464/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw463 rwState
+
+func (w *rw463) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw463) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw463) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw463) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw463) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw463) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw463) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw463) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw463) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw463) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw463) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw463) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 465/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom
+type rw464 rwState
+
+func (w *rw464) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw464) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw464) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw464) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw464) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw464) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw464) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw464) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 466/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, io.StringWriter
+type rw465 rwState
+
+func (w *rw465) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw465) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw465) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw465) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw465) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw465) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw465) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw465) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw465) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 467/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, http.Pusher
+type rw466 rwState
+
+func (w *rw466) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw466) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw466) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw466) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw466) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw466) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw466) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw466) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw466) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 468/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw467 rwState
+
+func (w *rw467) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw467) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw467) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw467) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw467) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw467) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw467) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw467) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw467) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw467) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 469/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler
+type rw468 rwState
+
+func (w *rw468) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw468) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw468) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw468) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw468) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw468) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw468) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw468) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw468) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 470/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw469 rwState
+
+func (w *rw469) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw469) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw469) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw469) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw469) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw469) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw469) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw469) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw469) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw469) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 471/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw470 rwState
+
+func (w *rw470) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw470) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw470) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw470) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw470) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw470) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw470) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw470) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw470) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw470) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 472/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw471 rwState
+
+func (w *rw471) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw471) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw471) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw471) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw471) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw471) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw471) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw471) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw471) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw471) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw471) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 473/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner
+type rw472 rwState
+
+func (w *rw472) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw472) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw472) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw472) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw472) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw472) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw472) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw472) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw472) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw472) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 474/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, io.StringWriter
+type rw473 rwState
+
+func (w *rw473) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw473) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw473) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw473) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw473) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw473) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw473) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw473) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw473) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw473) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw473) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 475/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher
+type rw474 rwState
+
+func (w *rw474) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw474) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw474) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw474) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw474) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw474) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw474) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw474) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw474) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw474) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw474) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 476/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw475 rwState
+
+func (w *rw475) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw475) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw475) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw475) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw475) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw475) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw475) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw475) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw475) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw475) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw475) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw475) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 477/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw476 rwState
+
+func (w *rw476) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw476) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw476) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw476) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw476) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw476) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw476) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw476) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw476) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw476) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw476) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 478/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw477 rwState
+
+func (w *rw477) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw477) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw477) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw477) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw477) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw477) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw477) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw477) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw477) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw477) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw477) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw477) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 479/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw478 rwState
+
+func (w *rw478) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw478) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw478) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw478) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw478) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw478) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw478) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw478) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw478) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw478) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw478) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw478) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 480/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw479 rwState
+
+func (w *rw479) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw479) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw479) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw479) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw479) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw479) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw479) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw479) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw479) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw479) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw479) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw479) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw479) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 481/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker
+type rw480 rwState
+
+func (w *rw480) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw480) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw480) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw480) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw480) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw480) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw480) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw480) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+
+// combination 482/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.StringWriter
+type rw481 rwState
+
+func (w *rw481) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw481) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw481) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw481) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw481) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw481) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw481) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw481) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw481) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 483/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, http.Pusher
+type rw482 rwState
+
+func (w *rw482) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw482) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw482) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw482) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw482) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw482) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw482) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw482) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw482) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 484/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, http.Pusher, io.StringWriter
+type rw483 rwState
+
+func (w *rw483) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw483) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw483) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw483) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw483) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw483) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw483) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw483) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw483) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw483) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 485/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler
+type rw484 rwState
+
+func (w *rw484) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw484) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw484) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw484) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw484) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw484) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw484) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw484) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw484) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 486/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, io.StringWriter
+type rw485 rwState
+
+func (w *rw485) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw485) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw485) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw485) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw485) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw485) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw485) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw485) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw485) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw485) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 487/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher
+type rw486 rwState
+
+func (w *rw486) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw486) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw486) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw486) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw486) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw486) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw486) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw486) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw486) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw486) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 488/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw487 rwState
+
+func (w *rw487) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw487) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw487) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw487) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw487) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw487) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw487) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw487) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw487) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw487) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw487) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 489/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner
+type rw488 rwState
+
+func (w *rw488) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw488) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw488) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw488) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw488) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw488) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw488) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw488) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw488) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw488) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 490/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, io.StringWriter
+type rw489 rwState
+
+func (w *rw489) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw489) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw489) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw489) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw489) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw489) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw489) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw489) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw489) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw489) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw489) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 491/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher
+type rw490 rwState
+
+func (w *rw490) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw490) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw490) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw490) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw490) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw490) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw490) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw490) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw490) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw490) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw490) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 492/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, http.Pusher, io.StringWriter
+type rw491 rwState
+
+func (w *rw491) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw491) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw491) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw491) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw491) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw491) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw491) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw491) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw491) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw491) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw491) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw491) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 493/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler
+type rw492 rwState
+
+func (w *rw492) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw492) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw492) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw492) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw492) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw492) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw492) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw492) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw492) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw492) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw492) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 494/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, io.StringWriter
+type rw493 rwState
+
+func (w *rw493) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw493) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw493) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw493) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw493) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw493) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw493) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw493) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw493) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw493) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw493) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw493) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 495/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher
+type rw494 rwState
+
+func (w *rw494) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw494) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw494) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw494) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw494) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw494) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw494) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw494) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw494) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw494) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw494) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw494) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 496/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw495 rwState
+
+func (w *rw495) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw495) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw495) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw495) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw495) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw495) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw495) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw495) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw495) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw495) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw495) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw495) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw495) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 497/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom
+type rw496 rwState
+
+func (w *rw496) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw496) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw496) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw496) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw496) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw496) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw496) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw496) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw496) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+
+// combination 498/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, io.StringWriter
+type rw497 rwState
+
+func (w *rw497) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw497) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw497) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw497) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw497) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw497) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw497) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw497) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw497) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw497) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 499/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher
+type rw498 rwState
+
+func (w *rw498) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw498) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw498) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw498) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw498) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw498) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw498) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw498) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw498) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw498) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 500/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, http.Pusher, io.StringWriter
+type rw499 rwState
+
+func (w *rw499) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw499) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw499) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw499) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw499) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw499) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw499) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw499) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw499) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw499) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw499) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 501/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler
+type rw500 rwState
+
+func (w *rw500) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw500) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw500) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw500) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw500) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw500) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw500) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw500) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw500) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw500) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 502/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, io.StringWriter
+type rw501 rwState
+
+func (w *rw501) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw501) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw501) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw501) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw501) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw501) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw501) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw501) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw501) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw501) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw501) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 503/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher
+type rw502 rwState
+
+func (w *rw502) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw502) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw502) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw502) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw502) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw502) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw502) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw502) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw502) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw502) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw502) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 504/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw503 rwState
+
+func (w *rw503) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw503) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw503) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw503) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw503) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw503) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw503) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw503) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw503) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw503) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw503) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw503) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 505/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner
+type rw504 rwState
+
+func (w *rw504) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw504) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw504) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw504) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw504) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw504) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw504) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw504) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw504) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw504) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw504) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+
+// combination 506/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, io.StringWriter
+type rw505 rwState
+
+func (w *rw505) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw505) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw505) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw505) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw505) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw505) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw505) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw505) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw505) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw505) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw505) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw505) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 507/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher
+type rw506 rwState
+
+func (w *rw506) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw506) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw506) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw506) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw506) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw506) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw506) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw506) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw506) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw506) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw506) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw506) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 508/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, http.Pusher, io.StringWriter
+type rw507 rwState
+
+func (w *rw507) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw507) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw507) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw507) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw507) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw507) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw507) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw507) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw507) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw507) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw507) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw507) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw507) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 509/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler
+type rw508 rwState
+
+func (w *rw508) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw508) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw508) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw508) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw508) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw508) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw508) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw508) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw508) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw508) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw508) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw508) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+
+// combination 510/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, io.StringWriter
+type rw509 rwState
+
+func (w *rw509) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw509) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw509) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw509) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw509) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw509) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw509) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw509) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw509) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw509) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw509) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw509) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw509) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+// combination 511/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher
+type rw510 rwState
+
+func (w *rw510) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw510) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw510) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw510) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw510) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw510) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw510) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw510) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw510) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw510) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw510) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw510) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw510) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+
+// combination 512/512: http.ResponseWriter, http.Flusher, httpFlushError, http.CloseNotifier, http.Hijacker, io.ReaderFrom, deadliner, fullDuplexEnabler, http.Pusher, io.StringWriter
+type rw511 rwState
+
+func (w *rw511) Unwrap() http.ResponseWriter { return w.w }
+func (w *rw511) Header() http.Header {
+ return (*rwState)(w).doHeader()
+}
+func (w *rw511) WriteHeader(code int) {
+ (*rwState)(w).doWriteHeader(code)
+}
+func (w *rw511) Write(b []byte) (int, error) {
+ return (*rwState)(w).doWrite(b)
+}
+func (w *rw511) Flush() {
+ (*rwState)(w).doFlush()
+}
+func (w *rw511) FlushError() error {
+ return (*rwState)(w).doFlushError()
+}
+func (w *rw511) CloseNotify() <-chan bool {
+ return (*rwState)(w).doCloseNotify()
+}
+func (w *rw511) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+ return (*rwState)(w).doHijack()
+}
+func (w *rw511) ReadFrom(src io.Reader) (int64, error) {
+ return (*rwState)(w).doReadFrom(src)
+}
+func (w *rw511) SetReadDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetReadDeadline(deadline)
+}
+func (w *rw511) SetWriteDeadline(deadline time.Time) error {
+ return (*rwState)(w).doSetWriteDeadline(deadline)
+}
+func (w *rw511) EnableFullDuplex() error {
+ return (*rwState)(w).doEnableFullDuplex()
+}
+func (w *rw511) Push(target string, opts *http.PushOptions) error {
+ return (*rwState)(w).doPush(target, opts)
+}
+func (w *rw511) WriteString(s string) (int, error) {
+ return (*rwState)(w).doWriteString(s)
+}
+
+type Unwrapper interface {
+ Unwrap() http.ResponseWriter
+}
+
+// Unwrap returns the underlying http.ResponseWriter from within zero or more
+// layers of httpsnoop wrappers.
+func Unwrap(w http.ResponseWriter) http.ResponseWriter {
+ if rw, ok := w.(Unwrapper); ok {
+ // recurse until rw.Unwrap() returns a non-Unwrapper
+ return Unwrap(rw.Unwrap())
+ }
+ return w
+}
diff --git a/vendor/github.com/felixge/httpsnoop/wrap_generated_gteq_1.8.go b/vendor/github.com/felixge/httpsnoop/wrap_generated_gteq_1.8.go
deleted file mode 100644
index 101cedde..00000000
--- a/vendor/github.com/felixge/httpsnoop/wrap_generated_gteq_1.8.go
+++ /dev/null
@@ -1,436 +0,0 @@
-// +build go1.8
-// Code generated by "httpsnoop/codegen"; DO NOT EDIT.
-
-package httpsnoop
-
-import (
- "bufio"
- "io"
- "net"
- "net/http"
-)
-
-// HeaderFunc is part of the http.ResponseWriter interface.
-type HeaderFunc func() http.Header
-
-// WriteHeaderFunc is part of the http.ResponseWriter interface.
-type WriteHeaderFunc func(code int)
-
-// WriteFunc is part of the http.ResponseWriter interface.
-type WriteFunc func(b []byte) (int, error)
-
-// FlushFunc is part of the http.Flusher interface.
-type FlushFunc func()
-
-// CloseNotifyFunc is part of the http.CloseNotifier interface.
-type CloseNotifyFunc func() <-chan bool
-
-// HijackFunc is part of the http.Hijacker interface.
-type HijackFunc func() (net.Conn, *bufio.ReadWriter, error)
-
-// ReadFromFunc is part of the io.ReaderFrom interface.
-type ReadFromFunc func(src io.Reader) (int64, error)
-
-// PushFunc is part of the http.Pusher interface.
-type PushFunc func(target string, opts *http.PushOptions) error
-
-// Hooks defines a set of method interceptors for methods included in
-// http.ResponseWriter as well as some others. You can think of them as
-// middleware for the function calls they target. See Wrap for more details.
-type Hooks struct {
- Header func(HeaderFunc) HeaderFunc
- WriteHeader func(WriteHeaderFunc) WriteHeaderFunc
- Write func(WriteFunc) WriteFunc
- Flush func(FlushFunc) FlushFunc
- CloseNotify func(CloseNotifyFunc) CloseNotifyFunc
- Hijack func(HijackFunc) HijackFunc
- ReadFrom func(ReadFromFunc) ReadFromFunc
- Push func(PushFunc) PushFunc
-}
-
-// Wrap returns a wrapped version of w that provides the exact same interface
-// as w. Specifically if w implements any combination of:
-//
-// - http.Flusher
-// - http.CloseNotifier
-// - http.Hijacker
-// - io.ReaderFrom
-// - http.Pusher
-//
-// The wrapped version will implement the exact same combination. If no hooks
-// are set, the wrapped version also behaves exactly as w. Hooks targeting
-// methods not supported by w are ignored. Any other hooks will intercept the
-// method they target and may modify the call's arguments and/or return values.
-// The CaptureMetrics implementation serves as a working example for how the
-// hooks can be used.
-func Wrap(w http.ResponseWriter, hooks Hooks) http.ResponseWriter {
- rw := &rw{w: w, h: hooks}
- _, i0 := w.(http.Flusher)
- _, i1 := w.(http.CloseNotifier)
- _, i2 := w.(http.Hijacker)
- _, i3 := w.(io.ReaderFrom)
- _, i4 := w.(http.Pusher)
- switch {
- // combination 1/32
- case !i0 && !i1 && !i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- }{rw, rw}
- // combination 2/32
- case !i0 && !i1 && !i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Pusher
- }{rw, rw, rw}
- // combination 3/32
- case !i0 && !i1 && !i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- io.ReaderFrom
- }{rw, rw, rw}
- // combination 4/32
- case !i0 && !i1 && !i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw}
- // combination 5/32
- case !i0 && !i1 && i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- }{rw, rw, rw}
- // combination 6/32
- case !i0 && !i1 && i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- http.Pusher
- }{rw, rw, rw, rw}
- // combination 7/32
- case !i0 && !i1 && i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 8/32
- case !i0 && !i1 && i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 9/32
- case !i0 && i1 && !i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- }{rw, rw, rw}
- // combination 10/32
- case !i0 && i1 && !i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Pusher
- }{rw, rw, rw, rw}
- // combination 11/32
- case !i0 && i1 && !i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 12/32
- case !i0 && i1 && !i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 13/32
- case !i0 && i1 && i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- }{rw, rw, rw, rw}
- // combination 14/32
- case !i0 && i1 && i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 15/32
- case !i0 && i1 && i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 16/32
- case !i0 && i1 && i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw, rw}
- // combination 17/32
- case i0 && !i1 && !i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- }{rw, rw, rw}
- // combination 18/32
- case i0 && !i1 && !i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Pusher
- }{rw, rw, rw, rw}
- // combination 19/32
- case i0 && !i1 && !i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 20/32
- case i0 && !i1 && !i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 21/32
- case i0 && !i1 && i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- }{rw, rw, rw, rw}
- // combination 22/32
- case i0 && !i1 && i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 23/32
- case i0 && !i1 && i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 24/32
- case i0 && !i1 && i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw, rw}
- // combination 25/32
- case i0 && i1 && !i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- }{rw, rw, rw, rw}
- // combination 26/32
- case i0 && i1 && !i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Pusher
- }{rw, rw, rw, rw, rw}
- // combination 27/32
- case i0 && i1 && !i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 28/32
- case i0 && i1 && !i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw, rw}
- // combination 29/32
- case i0 && i1 && i2 && !i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- }{rw, rw, rw, rw, rw}
- // combination 30/32
- case i0 && i1 && i2 && !i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- http.Pusher
- }{rw, rw, rw, rw, rw, rw}
- // combination 31/32
- case i0 && i1 && i2 && i3 && !i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw, rw}
- // combination 32/32
- case i0 && i1 && i2 && i3 && i4:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- http.Pusher
- }{rw, rw, rw, rw, rw, rw, rw}
- }
- panic("unreachable")
-}
-
-type rw struct {
- w http.ResponseWriter
- h Hooks
-}
-
-func (w *rw) Unwrap() http.ResponseWriter {
- return w.w
-}
-
-func (w *rw) Header() http.Header {
- f := w.w.(http.ResponseWriter).Header
- if w.h.Header != nil {
- f = w.h.Header(f)
- }
- return f()
-}
-
-func (w *rw) WriteHeader(code int) {
- f := w.w.(http.ResponseWriter).WriteHeader
- if w.h.WriteHeader != nil {
- f = w.h.WriteHeader(f)
- }
- f(code)
-}
-
-func (w *rw) Write(b []byte) (int, error) {
- f := w.w.(http.ResponseWriter).Write
- if w.h.Write != nil {
- f = w.h.Write(f)
- }
- return f(b)
-}
-
-func (w *rw) Flush() {
- f := w.w.(http.Flusher).Flush
- if w.h.Flush != nil {
- f = w.h.Flush(f)
- }
- f()
-}
-
-func (w *rw) CloseNotify() <-chan bool {
- f := w.w.(http.CloseNotifier).CloseNotify
- if w.h.CloseNotify != nil {
- f = w.h.CloseNotify(f)
- }
- return f()
-}
-
-func (w *rw) Hijack() (net.Conn, *bufio.ReadWriter, error) {
- f := w.w.(http.Hijacker).Hijack
- if w.h.Hijack != nil {
- f = w.h.Hijack(f)
- }
- return f()
-}
-
-func (w *rw) ReadFrom(src io.Reader) (int64, error) {
- f := w.w.(io.ReaderFrom).ReadFrom
- if w.h.ReadFrom != nil {
- f = w.h.ReadFrom(f)
- }
- return f(src)
-}
-
-func (w *rw) Push(target string, opts *http.PushOptions) error {
- f := w.w.(http.Pusher).Push
- if w.h.Push != nil {
- f = w.h.Push(f)
- }
- return f(target, opts)
-}
-
-type Unwrapper interface {
- Unwrap() http.ResponseWriter
-}
-
-// Unwrap returns the underlying http.ResponseWriter from within zero or more
-// layers of httpsnoop wrappers.
-func Unwrap(w http.ResponseWriter) http.ResponseWriter {
- if rw, ok := w.(Unwrapper); ok {
- // recurse until rw.Unwrap() returns a non-Unwrapper
- return Unwrap(rw.Unwrap())
- } else {
- return w
- }
-}
diff --git a/vendor/github.com/felixge/httpsnoop/wrap_generated_lt_1.8.go b/vendor/github.com/felixge/httpsnoop/wrap_generated_lt_1.8.go
deleted file mode 100644
index e0951df1..00000000
--- a/vendor/github.com/felixge/httpsnoop/wrap_generated_lt_1.8.go
+++ /dev/null
@@ -1,278 +0,0 @@
-// +build !go1.8
-// Code generated by "httpsnoop/codegen"; DO NOT EDIT.
-
-package httpsnoop
-
-import (
- "bufio"
- "io"
- "net"
- "net/http"
-)
-
-// HeaderFunc is part of the http.ResponseWriter interface.
-type HeaderFunc func() http.Header
-
-// WriteHeaderFunc is part of the http.ResponseWriter interface.
-type WriteHeaderFunc func(code int)
-
-// WriteFunc is part of the http.ResponseWriter interface.
-type WriteFunc func(b []byte) (int, error)
-
-// FlushFunc is part of the http.Flusher interface.
-type FlushFunc func()
-
-// CloseNotifyFunc is part of the http.CloseNotifier interface.
-type CloseNotifyFunc func() <-chan bool
-
-// HijackFunc is part of the http.Hijacker interface.
-type HijackFunc func() (net.Conn, *bufio.ReadWriter, error)
-
-// ReadFromFunc is part of the io.ReaderFrom interface.
-type ReadFromFunc func(src io.Reader) (int64, error)
-
-// Hooks defines a set of method interceptors for methods included in
-// http.ResponseWriter as well as some others. You can think of them as
-// middleware for the function calls they target. See Wrap for more details.
-type Hooks struct {
- Header func(HeaderFunc) HeaderFunc
- WriteHeader func(WriteHeaderFunc) WriteHeaderFunc
- Write func(WriteFunc) WriteFunc
- Flush func(FlushFunc) FlushFunc
- CloseNotify func(CloseNotifyFunc) CloseNotifyFunc
- Hijack func(HijackFunc) HijackFunc
- ReadFrom func(ReadFromFunc) ReadFromFunc
-}
-
-// Wrap returns a wrapped version of w that provides the exact same interface
-// as w. Specifically if w implements any combination of:
-//
-// - http.Flusher
-// - http.CloseNotifier
-// - http.Hijacker
-// - io.ReaderFrom
-//
-// The wrapped version will implement the exact same combination. If no hooks
-// are set, the wrapped version also behaves exactly as w. Hooks targeting
-// methods not supported by w are ignored. Any other hooks will intercept the
-// method they target and may modify the call's arguments and/or return values.
-// The CaptureMetrics implementation serves as a working example for how the
-// hooks can be used.
-func Wrap(w http.ResponseWriter, hooks Hooks) http.ResponseWriter {
- rw := &rw{w: w, h: hooks}
- _, i0 := w.(http.Flusher)
- _, i1 := w.(http.CloseNotifier)
- _, i2 := w.(http.Hijacker)
- _, i3 := w.(io.ReaderFrom)
- switch {
- // combination 1/16
- case !i0 && !i1 && !i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- }{rw, rw}
- // combination 2/16
- case !i0 && !i1 && !i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- io.ReaderFrom
- }{rw, rw, rw}
- // combination 3/16
- case !i0 && !i1 && i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- }{rw, rw, rw}
- // combination 4/16
- case !i0 && !i1 && i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 5/16
- case !i0 && i1 && !i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- }{rw, rw, rw}
- // combination 6/16
- case !i0 && i1 && !i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 7/16
- case !i0 && i1 && i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- }{rw, rw, rw, rw}
- // combination 8/16
- case !i0 && i1 && i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 9/16
- case i0 && !i1 && !i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- }{rw, rw, rw}
- // combination 10/16
- case i0 && !i1 && !i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- io.ReaderFrom
- }{rw, rw, rw, rw}
- // combination 11/16
- case i0 && !i1 && i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- }{rw, rw, rw, rw}
- // combination 12/16
- case i0 && !i1 && i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 13/16
- case i0 && i1 && !i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- }{rw, rw, rw, rw}
- // combination 14/16
- case i0 && i1 && !i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- io.ReaderFrom
- }{rw, rw, rw, rw, rw}
- // combination 15/16
- case i0 && i1 && i2 && !i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- }{rw, rw, rw, rw, rw}
- // combination 16/16
- case i0 && i1 && i2 && i3:
- return struct {
- Unwrapper
- http.ResponseWriter
- http.Flusher
- http.CloseNotifier
- http.Hijacker
- io.ReaderFrom
- }{rw, rw, rw, rw, rw, rw}
- }
- panic("unreachable")
-}
-
-type rw struct {
- w http.ResponseWriter
- h Hooks
-}
-
-func (w *rw) Unwrap() http.ResponseWriter {
- return w.w
-}
-
-func (w *rw) Header() http.Header {
- f := w.w.(http.ResponseWriter).Header
- if w.h.Header != nil {
- f = w.h.Header(f)
- }
- return f()
-}
-
-func (w *rw) WriteHeader(code int) {
- f := w.w.(http.ResponseWriter).WriteHeader
- if w.h.WriteHeader != nil {
- f = w.h.WriteHeader(f)
- }
- f(code)
-}
-
-func (w *rw) Write(b []byte) (int, error) {
- f := w.w.(http.ResponseWriter).Write
- if w.h.Write != nil {
- f = w.h.Write(f)
- }
- return f(b)
-}
-
-func (w *rw) Flush() {
- f := w.w.(http.Flusher).Flush
- if w.h.Flush != nil {
- f = w.h.Flush(f)
- }
- f()
-}
-
-func (w *rw) CloseNotify() <-chan bool {
- f := w.w.(http.CloseNotifier).CloseNotify
- if w.h.CloseNotify != nil {
- f = w.h.CloseNotify(f)
- }
- return f()
-}
-
-func (w *rw) Hijack() (net.Conn, *bufio.ReadWriter, error) {
- f := w.w.(http.Hijacker).Hijack
- if w.h.Hijack != nil {
- f = w.h.Hijack(f)
- }
- return f()
-}
-
-func (w *rw) ReadFrom(src io.Reader) (int64, error) {
- f := w.w.(io.ReaderFrom).ReadFrom
- if w.h.ReadFrom != nil {
- f = w.h.ReadFrom(f)
- }
- return f(src)
-}
-
-type Unwrapper interface {
- Unwrap() http.ResponseWriter
-}
-
-// Unwrap returns the underlying http.ResponseWriter from within zero or more
-// layers of httpsnoop wrappers.
-func Unwrap(w http.ResponseWriter) http.ResponseWriter {
- if rw, ok := w.(Unwrapper); ok {
- // recurse until rw.Unwrap() returns a non-Unwrapper
- return Unwrap(rw.Unwrap())
- } else {
- return w
- }
-}
diff --git a/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go
index 8547c8df..820bf436 100644
--- a/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go
+++ b/vendor/github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header/header.go
@@ -90,7 +90,7 @@ loop:
s = skipSpace(s[1:])
}
}
- return
+ return specs
}
func skipSpace(s string) (rest string) {
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/vendor/github.com/prometheus/client_golang/prometheus/counter.go
index 4ce84e7a..7d963d3a 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/counter.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/counter.go
@@ -85,11 +85,12 @@ type CounterVecOpts struct {
// Both internal tracking values are added up in the Write method. This has to
// be taken into account when it comes to precision and overflow behavior.
func NewCounter(opts CounterOpts) Counter {
- desc := NewDesc(
+ desc := V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
if opts.now == nil {
opts.now = time.Now
@@ -205,6 +206,7 @@ func (v2) NewCounterVec(opts CounterVecOpts) *CounterVec {
opts.Help,
opts.VariableLabels,
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
if opts.now == nil {
opts.now = time.Now
@@ -349,10 +351,11 @@ type CounterFunc interface {
//
// Check out the ExampleGaugeFunc examples for the similar GaugeFunc.
func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc {
- return newValueFunc(NewDesc(
+ return newValueFunc(V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
), CounterValue, function)
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/vendor/github.com/prometheus/client_golang/prometheus/desc.go
index 2331b8b4..a3c92e7a 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/desc.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/desc.go
@@ -47,6 +47,8 @@ type Desc struct {
fqName string
// help provides some helpful information about this metric.
help string
+ // unit provides the unit of this metric.
+ unit string
// constLabelPairs contains precalculated DTO label pairs based on
// the constant labels.
constLabelPairs []*dto.LabelPair
@@ -66,6 +68,16 @@ type Desc struct {
err error
}
+// DescOpt allows setting optional fields for NewDesc.
+type DescOpt func(*Desc)
+
+// WithUnit sets the unit for a Desc.
+func WithUnit(unit string) DescOpt {
+ return func(d *Desc) {
+ d.unit = unit
+ }
+}
+
// NewDesc allocates and initializes a new Desc. Errors are recorded in the Desc
// and will be reported on registration time. variableLabels and constLabels can
// be nil if no such labels should be set. fqName must not be empty.
@@ -89,14 +101,17 @@ func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) *
//
// For constLabels, the label values are constant. Therefore, they are fully
// specified in the Desc. See the Collector example for a usage pattern.
-func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, constLabels Labels) *Desc {
+func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, constLabels Labels, opts ...DescOpt) *Desc {
d := &Desc{
fqName: fqName,
help: help,
variableLabels: variableLabels.compile(),
}
- //nolint:staticcheck // TODO: Don't use deprecated model.NameValidationScheme.
- if !model.NameValidationScheme.IsValidMetricName(fqName) {
+
+ for _, opt := range opts {
+ opt(d)
+ }
+ if !model.UTF8Validation.IsValidMetricName(fqName) {
d.err = fmt.Errorf("%q is not a valid metric name", fqName)
return d
}
@@ -150,11 +165,13 @@ func (v2) NewDesc(fqName, help string, variableLabels ConstrainableLabels, const
d.id = xxh.Sum64()
// Sort labelNames so that order doesn't matter for the hash.
sort.Strings(labelNames)
- // Now hash together (in this order) the help string and the sorted
+ // Now hash together (in this order) the help string, the unit string and the sorted
// label names.
xxh.Reset()
xxh.WriteString(help)
xxh.Write(separatorByteSlice)
+ xxh.WriteString(d.unit)
+ xxh.Write(separatorByteSlice)
for _, labelName := range labelNames {
xxh.WriteString(labelName)
xxh.Write(separatorByteSlice)
@@ -182,6 +199,15 @@ func NewInvalidDesc(err error) *Desc {
}
}
+// Err returns an error that occurred during construction, if any.
+//
+// Calling this method is optional. It can be used to detect construction
+// errors early, before invoking other methods on the Desc. If an error is
+// present, later operations may not behave as expected.
+func (d *Desc) Err() error {
+ return d.err
+}
+
func (d *Desc) String() string {
lpStrings := make([]string, 0, len(d.constLabelPairs))
for _, lp := range d.constLabelPairs {
@@ -202,9 +228,10 @@ func (d *Desc) String() string {
}
}
return fmt.Sprintf(
- "Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: {%s}}",
+ "Desc{fqName: %q, help: %q, unit: %q, constLabels: {%s}, variableLabels: {%s}}",
d.fqName,
d.help,
+ d.unit,
strings.Join(lpStrings, ","),
strings.Join(vlStrings, ","),
)
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
index de5a8562..327746f4 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
@@ -47,14 +47,14 @@ func (e *expvarCollector) Collect(ch chan<- Metric) {
if expVar == nil {
continue
}
- var v interface{}
+ var v any
labels := make([]string, len(desc.variableLabels.names))
if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil {
ch <- NewInvalidMetric(desc, err)
continue
}
- var processValue func(v interface{}, i int)
- processValue = func(v interface{}, i int) {
+ var processValue func(v any, i int)
+ processValue = func(v any, i int) {
if i >= len(labels) {
copiedLabels := append(make([]string, 0, len(labels)), labels...)
switch v := v.(type) {
@@ -72,7 +72,7 @@ func (e *expvarCollector) Collect(ch chan<- Metric) {
ch <- m
return
}
- vm, ok := v.(map[string]interface{})
+ vm, ok := v.(map[string]any)
if !ok {
return
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go
index dd2eac94..41e54bf2 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go
@@ -76,11 +76,12 @@ type GaugeVecOpts struct {
// scenarios for Gauges and Counters, where the former tends to be Set-heavy and
// the latter Inc-heavy.
func NewGauge(opts GaugeOpts) Gauge {
- desc := NewDesc(
+ desc := V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
result := &gauge{desc: desc, labelPairs: desc.constLabelPairs}
result.init(result) // Init self-collection.
@@ -163,6 +164,7 @@ func (v2) NewGaugeVec(opts GaugeVecOpts) *GaugeVec {
opts.Help,
opts.VariableLabels,
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
return &GaugeVec{
MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
@@ -302,10 +304,11 @@ type GaugeFunc interface {
// value of 1. Example:
// https://github.com/prometheus/common/blob/8558a5b7db3c84fa38b4766966059a7bd5bfa2ee/version/info.go#L36-L56
func NewGaugeFunc(opts GaugeOpts, function func() float64) GaugeFunc {
- return newValueFunc(NewDesc(
+ return newValueFunc(V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
), GaugeValue, function)
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go
deleted file mode 100644
index 897a6e90..00000000
--- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_go116.go
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2021 The Prometheus Authors
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !go1.17
-// +build !go1.17
-
-package prometheus
-
-import (
- "runtime"
- "sync"
- "time"
-)
-
-type goCollector struct {
- base baseGoCollector
-
- // ms... are memstats related.
- msLast *runtime.MemStats // Previously collected memstats.
- msLastTimestamp time.Time
- msMtx sync.Mutex // Protects msLast and msLastTimestamp.
- msMetrics memStatsMetrics
- msRead func(*runtime.MemStats) // For mocking in tests.
- msMaxWait time.Duration // Wait time for fresh memstats.
- msMaxAge time.Duration // Maximum allowed age of old memstats.
-}
-
-// NewGoCollector is the obsolete version of collectors.NewGoCollector.
-// See there for documentation.
-//
-// Deprecated: Use collectors.NewGoCollector instead.
-func NewGoCollector() Collector {
- msMetrics := goRuntimeMemStats()
- msMetrics = append(msMetrics, struct {
- desc *Desc
- eval func(*runtime.MemStats) float64
- valType ValueType
- }{
- // This metric is omitted in Go1.17+, see https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034
- desc: NewDesc(
- memstatNamespace("gc_cpu_fraction"),
- "The fraction of this program's available CPU time used by the GC since the program started.",
- nil, nil,
- ),
- eval: func(ms *runtime.MemStats) float64 { return ms.GCCPUFraction },
- valType: GaugeValue,
- })
- return &goCollector{
- base: newBaseGoCollector(),
- msLast: &runtime.MemStats{},
- msRead: runtime.ReadMemStats,
- msMaxWait: time.Second,
- msMaxAge: 5 * time.Minute,
- msMetrics: msMetrics,
- }
-}
-
-// Describe returns all descriptions of the collector.
-func (c *goCollector) Describe(ch chan<- *Desc) {
- c.base.Describe(ch)
- for _, i := range c.msMetrics {
- ch <- i.desc
- }
-}
-
-// Collect returns the current state of all metrics of the collector.
-func (c *goCollector) Collect(ch chan<- Metric) {
- var (
- ms = &runtime.MemStats{}
- done = make(chan struct{})
- )
- // Start reading memstats first as it might take a while.
- go func() {
- c.msRead(ms)
- c.msMtx.Lock()
- c.msLast = ms
- c.msLastTimestamp = time.Now()
- c.msMtx.Unlock()
- close(done)
- }()
-
- // Collect base non-memory metrics.
- c.base.Collect(ch)
-
- timer := time.NewTimer(c.msMaxWait)
- select {
- case <-done: // Our own ReadMemStats succeeded in time. Use it.
- timer.Stop() // Important for high collection frequencies to not pile up timers.
- c.msCollect(ch, ms)
- return
- case <-timer.C: // Time out, use last memstats if possible. Continue below.
- }
- c.msMtx.Lock()
- if time.Since(c.msLastTimestamp) < c.msMaxAge {
- // Last memstats are recent enough. Collect from them under the lock.
- c.msCollect(ch, c.msLast)
- c.msMtx.Unlock()
- return
- }
- // If we are here, the last memstats are too old or don't exist. We have
- // to wait until our own ReadMemStats finally completes. For that to
- // happen, we have to release the lock.
- c.msMtx.Unlock()
- <-done
- c.msCollect(ch, ms)
-}
-
-func (c *goCollector) msCollect(ch chan<- Metric, ms *runtime.MemStats) {
- for _, i := range c.msMetrics {
- ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms))
- }
-}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go
index 6b868473..1db1c4be 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/go_collector_latest.go
@@ -98,7 +98,7 @@ type goCollector struct {
// snapshot is always produced by Collect.
mu sync.Mutex
- // Contains all samples that has to retrieved from runtime/metrics (not all of them will be exposed).
+ // Contains all samples that have to be retrieved from runtime/metrics (not all of them will be exposed).
sampleBuf []metrics.Sample
// sampleMap allows lookup for MemStats metrics and runtime/metrics histograms for exact sums.
sampleMap map[string]*metrics.Sample
@@ -210,16 +210,26 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector {
sampleBuf = append(sampleBuf, metrics.Sample{Name: d.Name})
sampleMap[d.Name] = &sampleBuf[len(sampleBuf)-1]
+ // Extract unit from the runtime/metrics name (e.g., "/gc/heap/allocs:bytes" -> "bytes")
+ // and sanitize to match Prometheus naming conventions (e.g., "cpu-seconds" -> "cpu_seconds")
+ var unit string
+ if idx := strings.IndexRune(d.Name, ':'); idx >= 0 {
+ unit = d.Name[idx+1:]
+ unit = strings.ReplaceAll(unit, "-", "_")
+ unit = strings.ReplaceAll(unit, "*", "_")
+ unit = strings.ReplaceAll(unit, "/", "_per_")
+ }
+
var m collectorMetric
if d.Kind == metrics.KindFloat64Histogram {
_, hasSum := opt.RuntimeMetricSumForHist[d.Name]
- unit := d.Name[strings.IndexRune(d.Name, ':')+1:]
m = newBatchHistogram(
- NewDesc(
+ V2.NewDesc(
BuildFQName(namespace, subsystem, name),
help,
+ UnconstrainedLabels(nil),
nil,
- nil,
+ WithUnit(unit),
),
internal.RuntimeMetricsBucketsForUnit(bucketsMap[d.Name], unit),
hasSum,
@@ -230,6 +240,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector {
Subsystem: subsystem,
Name: name,
Help: help,
+ Unit: unit,
},
)
} else {
@@ -238,6 +249,7 @@ func NewGoCollector(opts ...func(o *internal.GoCollectorOptions)) Collector {
Subsystem: subsystem,
Name: name,
Help: help,
+ Unit: unit,
})
}
metricSet = append(metricSet, m)
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go
index c453b754..88bae3b3 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go
@@ -378,6 +378,9 @@ type HistogramOpts struct {
// string.
Help string
+ // Unit provides the unit of this Histogram.
+ Unit string
+
// ConstLabels are used to attach fixed labels to this metric. Metrics
// with the same fully-qualified name must have the same label names in
// their ConstLabels.
@@ -522,11 +525,12 @@ type HistogramVecOpts struct {
// for each bucket.
func NewHistogram(opts HistogramOpts) Histogram {
return newHistogram(
- NewDesc(
+ V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
),
opts,
)
@@ -966,7 +970,7 @@ func (h *histogram) maybeReset(
// We are using the possibly mocked h.now() rather than
// time.Since(h.lastResetTime) to enable testing.
if h.nativeHistogramMinResetDuration == 0 || // No reset configured.
- h.resetScheduled || // Do not interefere if a reset is already scheduled.
+ h.resetScheduled || // Do not interfere if a reset is already scheduled.
h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration {
return false
}
@@ -1053,8 +1057,8 @@ func (h *histogram) maybeWidenZeroBucket(hot, cold *histogramCounts) bool {
atomic.StoreUint64(&cold.nativeHistogramZeroThresholdBits, math.Float64bits(newZeroThreshold))
// ...and then merge the newly deleted buckets into the wider zero
// bucket.
- mergeAndDeleteOrAddAndReset := func(hotBuckets, coldBuckets *sync.Map) func(k, v interface{}) bool {
- return func(k, v interface{}) bool {
+ mergeAndDeleteOrAddAndReset := func(hotBuckets, coldBuckets *sync.Map) func(k, v any) bool {
+ return func(k, v any) bool {
key := k.(int)
bucket := v.(*int64)
if key == smallestKey {
@@ -1107,8 +1111,8 @@ func (h *histogram) doubleBucketWidth(hot, cold *histogramCounts) {
// ...adjust the schema in the cold counts, too...
atomic.StoreInt32(&cold.nativeHistogramSchema, coldSchema)
// ...and then merge the cold buckets into the wider hot buckets.
- merge := func(hotBuckets *sync.Map) func(k, v interface{}) bool {
- return func(k, v interface{}) bool {
+ merge := func(hotBuckets *sync.Map) func(k, v any) bool {
+ return func(k, v any) bool {
key := k.(int)
bucket := v.(*int64)
// Adjust key to match the bucket to merge into.
@@ -1190,6 +1194,7 @@ func (v2) NewHistogramVec(opts HistogramVecOpts) *HistogramVec {
opts.Help,
opts.VariableLabels,
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
return &HistogramVec{
MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
@@ -1476,7 +1481,7 @@ func pickSchema(bucketFactor float64) int32 {
func makeBuckets(buckets *sync.Map) ([]*dto.BucketSpan, []int64) {
var ii []int
- buckets.Range(func(k, v interface{}) bool {
+ buckets.Range(func(k, v any) bool {
ii = append(ii, k.(int))
return true
})
@@ -1553,8 +1558,8 @@ func addToBucket(buckets *sync.Map, key int, increment int64) bool {
// according to the buckets ranged through. It then resets all buckets ranged
// through to 0 (but leaves them in place so that they don't need to get
// recreated on the next scrape).
-func addAndReset(hotBuckets *sync.Map, bucketNumber *uint32) func(k, v interface{}) bool {
- return func(k, v interface{}) bool {
+func addAndReset(hotBuckets *sync.Map, bucketNumber *uint32) func(k, v any) bool {
+ return func(k, v any) bool {
bucket := v.(*int64)
if addToBucket(hotBuckets, k.(int), atomic.LoadInt64(bucket)) {
atomic.AddUint32(bucketNumber, 1)
@@ -1565,7 +1570,7 @@ func addAndReset(hotBuckets *sync.Map, bucketNumber *uint32) func(k, v interface
}
func deleteSyncMap(m *sync.Map) {
- m.Range(func(k, v interface{}) bool {
+ m.Range(func(k, v any) bool {
m.Delete(k)
return true
})
@@ -1573,7 +1578,7 @@ func deleteSyncMap(m *sync.Map) {
func findSmallestKey(m *sync.Map) int {
result := math.MaxInt32
- m.Range(func(k, v interface{}) bool {
+ m.Range(func(k, v any) bool {
key := k.(int)
if key < result {
result = key
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go b/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
index 7bac0da3..2db270f2 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/internal/difflib.go
@@ -78,7 +78,7 @@ type OpCode struct {
// notion, pairing up elements that appear uniquely in each sequence.
// That, and the method here, appear to yield more intuitive difference
// reports than does diff. This method appears to be the least vulnerable
-// to synching up on blocks of "junk lines", though (like blank lines in
+// to syncing up on blocks of "junk lines", though (like blank lines in
// ordinary text files, or maybe "
" lines in HTML files). That may be
// because this is the only method of the 3 that has a *concept* of
// "junk" .
@@ -567,7 +567,7 @@ type UnifiedDiff struct {
func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error {
buf := bufio.NewWriter(writer)
defer buf.Flush()
- wf := func(format string, args ...interface{}) error {
+ wf := func(format string, args ...any) error {
_, err := fmt.Fprintf(buf, format, args...)
return err
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/labels.go b/vendor/github.com/prometheus/client_golang/prometheus/labels.go
index 5fe8d3b4..a0285489 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/labels.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/labels.go
@@ -184,6 +184,5 @@ func validateLabelValues(vals []string, expectedNumberOfValues int) error {
}
func checkLabelName(l string) bool {
- //nolint:staticcheck // TODO: Don't use deprecated model.NameValidationScheme.
- return model.NameValidationScheme.IsValidLabelName(l) && !strings.HasPrefix(l, reservedLabelPrefix)
+ return model.UTF8Validation.IsValidLabelName(l) && !strings.HasPrefix(l, reservedLabelPrefix)
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go
index 76e59f12..c5cb90ad 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/metric.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/metric.go
@@ -81,6 +81,9 @@ type Opts struct {
// string.
Help string
+ // Unit provides the unit of this metric as per https://prometheus.io/docs/specs/om
+ Unit string
+
// ConstLabels are used to attach fixed labels to this metric. Metrics
// with the same fully-qualified name must have the same label names in
// their ConstLabels.
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_darwin.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_darwin.go
index b32c95fa..2b16298f 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_darwin.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_darwin.go
@@ -72,7 +72,13 @@ func getOpenFileCount() (float64, error) {
}
func (c *processCollector) processCollect(ch chan<- Metric) {
- if procs, err := unix.SysctlKinfoProcSlice("kern.proc.pid", os.Getpid()); err == nil {
+ pid, err := c.pidFn()
+ if err != nil {
+ c.reportError(ch, nil, err)
+ return
+ }
+
+ if procs, err := unix.SysctlKinfoProcSlice("kern.proc.pid", pid); err == nil {
if len(procs) == 1 {
startTime := float64(procs[0].Proc.P_starttime.Nano() / 1e9)
ch <- MustNewConstMetric(c.startTime, GaugeValue, startTime)
@@ -84,6 +90,11 @@ func (c *processCollector) processCollect(ch chan<- Metric) {
c.reportError(ch, c.startTime, err)
}
+ if pid != os.Getpid() {
+ c.reportError(ch, nil, fmt.Errorf("collecting metrics for pid %d is not supported on darwin: process metrics collection is limited to the current process (pid %d)", pid, os.Getpid()))
+ return
+ }
+
// The proc structure returned by kern.proc.pid above has an Rusage member,
// but it is not filled in, so it needs to be fetched by getrusage(2). For
// that call, the UTime, STime, and Maxrss members are filled out, but not
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
index fa474289..c08dd05f 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
@@ -30,6 +30,10 @@ var (
procGetProcessMemoryInfo = modpsapi.NewProc("GetProcessMemoryInfo")
procGetProcessHandleCount = modkernel32.NewProc("GetProcessHandleCount")
+
+ openProcess = windows.OpenProcess
+ closeHandle = windows.CloseHandle
+ getProcessTimes = windows.GetProcessTimes
)
type processMemoryCounters struct {
@@ -79,10 +83,21 @@ func getProcessHandleCount(handle windows.Handle) (uint32, error) {
}
func (c *processCollector) processCollect(ch chan<- Metric) {
- h := windows.CurrentProcess()
+ pid, err := c.pidFn()
+ if err != nil {
+ c.reportError(ch, nil, err)
+ return
+ }
+
+ h, err := openProcess(windows.PROCESS_QUERY_INFORMATION|windows.PROCESS_VM_READ, false, uint32(pid))
+ if err != nil {
+ c.reportError(ch, nil, err)
+ return
+ }
+ defer closeHandle(h)
var startTime, exitTime, kernelTime, userTime windows.Filetime
- err := windows.GetProcessTimes(h, &startTime, &exitTime, &kernelTime, &userTime)
+ err = getProcessTimes(h, &startTime, &exitTime, &kernelTime, &userTime)
if err != nil {
c.reportError(ch, nil, err)
return
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go
index 763d99e3..c28af5ce 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/http.go
@@ -37,10 +37,12 @@ import (
"fmt"
"io"
"net/http"
+ "slices"
"strconv"
"sync"
"time"
+ dto "github.com/prometheus/client_model/go"
"github.com/prometheus/common/expfmt"
"github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil"
@@ -74,11 +76,118 @@ func defaultCompressionFormats() []Compression {
}
var gzipPool = sync.Pool{
- New: func() interface{} {
+ New: func() any {
return gzip.NewWriter(nil)
},
}
+// coalescingGatherer wraps a TransactionalGatherer to deduplicate concurrent
+// Gather calls. When a Gather is already in flight, new callers join the
+// existing cycle and receive the same result once it completes. The underlying
+// done function is called exactly once, when the last joined caller releases.
+//
+// This prevents goroutine pile-up when the scrape rate is faster than the
+// time collectors need to produce metrics.
+type coalescingGatherer struct {
+ g prometheus.TransactionalGatherer
+ mu sync.Mutex
+ cycle *gatherCycle
+}
+
+// gatherCycle tracks a single in-flight Gather and all HTTP handlers sharing it.
+type gatherCycle struct {
+ ready chan struct{} // closed when Gather completes; happens-before reads of mfs/err/done
+ mfs []*dto.MetricFamily // canonical result, set before ready is closed; callers get a slices.Clone, the element values stay shared and must not be mutated
+ err error // set before ready is closed
+ done func() // underlying done callback; set before ready is closed
+ refs int // number of handlers using this cycle; protected by coalescingGatherer.mu
+}
+
+var _ prometheus.TransactionalGatherer = (*coalescingGatherer)(nil) // compile-time interface check
+
+// errGatherPanicked is returned to callers that joined an in-flight coalesced
+// Gather whose underlying gatherer panicked. See the panic guard in Gather for
+// why joiners receive this error instead of the panic itself.
+var errGatherPanicked = errors.New("coalesced gather panicked")
+
+func (c *coalescingGatherer) Gather() ([]*dto.MetricFamily, func(), error) {
+ c.mu.Lock()
+ if cy := c.cycle; cy != nil {
+ // c.cycle is non-nil while Gather runs or handlers are still consuming its results.
+ cy.refs++
+ c.mu.Unlock()
+ <-cy.ready
+ // Each caller gets its own slice header so it can filter or reorder
+ // without racing other callers sharing this cycle. The *dto.MetricFamily
+ // values remain shared and must not be mutated in place.
+ return slices.Clone(cy.mfs), c.releaseFunc(cy), cy.err
+ }
+ cy := &gatherCycle{
+ ready: make(chan struct{}),
+ done: func() {},
+ refs: 1,
+ }
+ c.cycle = cy
+ c.mu.Unlock()
+
+ // Guard against a panic in c.g.Gather. The common case, a panicking
+ // Collector, never reaches here: Registry.Gather recovers Collector panics
+ // and returns them as an error. This guard only covers the rare case where
+ // the wrapped gatherer itself panics.
+ //
+ // We deliberately do not recover: the leader's panic propagates and is
+ // handled by net/http exactly as it would be without coalescing. We only
+ // set cy.err before closing cy.ready so joiners waiting on <-cy.ready fail
+ // with that error instead of silently returning an empty, successful
+ // response, and we clear c.cycle so the next Gather starts a fresh cycle.
+ //
+ // The leader never runs its own releaseFunc on this path, so its ref is
+ // not decremented; that is harmless because the cycle is detached (c.cycle
+ // = nil) and cy.done is still the no-op set at construction (c.g.Gather
+ // panicked before assigning a real done). If cy.done is ever made non-nil
+ // before c.g.Gather runs, this path would need to release it.
+ panicked := true
+ defer func() {
+ if panicked {
+ c.mu.Lock()
+ if c.cycle == cy {
+ c.cycle = nil
+ }
+ c.mu.Unlock()
+ cy.err = errGatherPanicked // set before close: happens-before joiners' reads
+ close(cy.ready)
+ }
+ }()
+ cy.mfs, cy.done, cy.err = c.g.Gather()
+ panicked = false
+ close(cy.ready) // happens-before joiners' reads of cy.mfs/err/done
+
+ // Clone here too so cy.mfs stays the write-once canonical slice: joiners
+ // read it concurrently via slices.Clone, so the leader must not hand out
+ // (and potentially reorder) the same backing array.
+ return slices.Clone(cy.mfs), c.releaseFunc(cy), cy.err
+}
+
+// releaseFunc returns the done callback for one caller sharing cy.
+// When the last caller releases, the underlying done is invoked and the
+// cycle is cleared so the next Gather starts fresh.
+func (c *coalescingGatherer) releaseFunc(cy *gatherCycle) func() {
+ return func() {
+ c.mu.Lock()
+ cy.refs--
+ if cy.refs > 0 {
+ c.mu.Unlock()
+ return
+ }
+ // Last caller.
+ if c.cycle == cy {
+ c.cycle = nil
+ }
+ c.mu.Unlock()
+ cy.done() // called outside the lock to avoid holding it during done
+ }
+}
+
// Handler returns an http.Handler for the prometheus.DefaultGatherer, using
// default HandlerOpts, i.e. it reports the first error as an HTTP error, it has
// no error logging, and it applies compression if requested by the client.
@@ -89,6 +198,10 @@ var gzipPool = sync.Pool{
// metrics used for instrumentation will be shared between them, providing
// global scrape counts.
//
+// The handler supports filtering metrics by name using the `name[]` query parameter.
+// Multiple metric names can be specified by providing the parameter multiple times.
+// When no name[] parameters are provided, all metrics are returned.
+//
// This function is meant to cover the bulk of basic use cases. If you are doing
// anything that requires more customization (including using a non-default
// Gatherer, different instrumentation, and non-default HandlerOpts), use the
@@ -105,6 +218,10 @@ func Handler() http.Handler {
// Gatherers, with non-default HandlerOpts, and/or with custom (or no)
// instrumentation. Use the InstrumentMetricHandler function to apply the same
// kind of instrumentation as it is used by the Handler function.
+//
+// The handler supports filtering metrics by name using the `name[]` query parameter.
+// Multiple metric names can be specified by providing the parameter multiple times.
+// When no name[] parameters are provided, all metrics are returned.
func HandlerFor(reg prometheus.Gatherer, opts HandlerOpts) http.Handler {
return HandlerForTransactional(prometheus.ToTransactionalGatherer(reg), opts)
}
@@ -112,7 +229,15 @@ func HandlerFor(reg prometheus.Gatherer, opts HandlerOpts) http.Handler {
// HandlerForTransactional is like HandlerFor, but it uses transactional gather, which
// can safely change in-place returned *dto.MetricFamily before call to `Gather` and after
// call to `done` of that `Gather`.
+//
+// The handler supports filtering metrics by name using the `name[]` query parameter.
+// Multiple metric names can be specified by providing the parameter multiple times.
+// When no name[] parameters are provided, all metrics are returned.
func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerOpts) http.Handler {
+ if opts.CoalesceGather {
+ reg = &coalescingGatherer{g: reg}
+ }
+
var (
inFlightSem chan struct{}
errCnt = prometheus.NewCounterVec(
@@ -214,12 +339,14 @@ func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerO
rsp.Header().Set(contentEncodingHeader, encodingHeader)
}
- var enc expfmt.Encoder
+ var (
+ enc expfmt.Encoder
+ encOpts []expfmt.EncoderOption
+ )
if opts.EnableOpenMetricsTextCreatedSamples {
- enc = expfmt.NewEncoder(w, contentType, expfmt.WithCreatedLines())
- } else {
- enc = expfmt.NewEncoder(w, contentType)
+ encOpts = append(encOpts, expfmt.WithCreatedLines())
}
+ enc = expfmt.NewEncoder(w, contentType, encOpts...)
// handleError handles the error according to opts.ErrorHandling
// and returns true if we have to abort after the handling.
@@ -245,7 +372,24 @@ func HandlerForTransactional(reg prometheus.TransactionalGatherer, opts HandlerO
return false
}
+ // Build metric name filter set from query params (if any). The URL
+ // can be nil on hand-constructed requests.
+ var metricFilter map[string]struct{}
+ if req.URL != nil {
+ if metricNames := req.URL.Query()["name[]"]; len(metricNames) > 0 {
+ metricFilter = make(map[string]struct{}, len(metricNames))
+ for _, name := range metricNames {
+ metricFilter[name] = struct{}{}
+ }
+ }
+ }
+
for _, mf := range mfs {
+ if metricFilter != nil {
+ if _, ok := metricFilter[mf.GetName()]; !ok {
+ continue
+ }
+ }
if handleError(enc.Encode(mf)) {
return
}
@@ -353,7 +497,7 @@ const (
// log.Logger from the standard library implements this interface, and it is
// easy to implement by custom loggers, if they don't do so already anyway.
type Logger interface {
- Println(v ...interface{})
+ Println(v ...any)
}
// HandlerOpts specifies options how to serve metrics via an http.Handler. The
@@ -400,6 +544,40 @@ type HandlerOpts struct {
// Service Unavailable and a suitable message in the body. If
// MaxRequestsInFlight is 0 or negative, no limit is applied.
MaxRequestsInFlight int
+ // CoalesceGather, if true, deduplicates concurrent Gather calls so that
+ // only one collection runs at a time. Additional requests that arrive
+ // while a Gather is in flight will receive the same result once it
+ // completes. This prevents goroutine pile-up when the scrape rate is
+ // faster than the time collectors need to produce metrics.
+ //
+ // When enabled, concurrent scrapers share a single metric snapshot per
+ // collection cycle. Each request receives its own copy of the returned
+ // slice, so filtering or reordering it (for example via name[] query
+ // parameters) is safe. The pointed-to MetricFamily values are still
+ // shared: the built-in handler only reads them, so this is safe in
+ // practice, but a custom TransactionalGatherer that mutates the returned
+ // families in place after Gather returns must not use this option.
+ //
+ // Because the snapshot is shared, a request that arrives while a cycle is
+ // in flight receives that cycle's result even though collection began
+ // before the request; two scrapers joined to one cycle observe the same
+ // timestamps rather than independently gathered data.
+ //
+ // Consider using CoalesceGather together with Timeout. Timeout bounds the
+ // client-facing response time and keeps at most one collection running at
+ // a time, but it does not cancel the underlying Gather: a joined request
+ // that times out still holds a MaxRequestsInFlight slot until the shared
+ // collection completes.
+ //
+ // Panic handling: a panicking Collector is already turned into an error by
+ // the registry, so joiners receive that error like any other. In the rare
+ // case where the wrapped gatherer itself panics, the panicking request's
+ // panic propagates as usual (handled by net/http), while requests that
+ // joined the same cycle receive an error rather than an empty response.
+ //
+ // NOTE: This option is experimental and may change or be removed in a
+ // future release.
+ CoalesceGather bool
// If handling a request takes longer than Timeout, it is responded to
// with 503 ServiceUnavailable and a suitable Message. No timeout is
// applied if Timeout is 0 or negative. Note that with the current
@@ -407,8 +585,9 @@ type HandlerOpts struct {
// described above (and even that only if sending of the body hasn't
// started yet), while the bulk work of gathering all the metrics keeps
// running in the background (with the eventual result to be thrown
- // away). Until the implementation is improved, it is recommended to
- // implement a separate timeout in potentially slow Collectors.
+ // away). When CoalesceGather is enabled, only one such background Gather
+ // can be in flight at a time. It is also recommended to implement a
+ // separate timeout in potentially slow Collectors.
Timeout time.Duration
// If true, the experimental OpenMetrics encoding is added to the
// possible options during content negotiation. Note that Prometheus
@@ -460,7 +639,7 @@ func httpError(rsp http.ResponseWriter, err error) {
// negotiateEncodingWriter reads the Accept-Encoding header from a request and
// selects the right compression based on an allow-list of supported
-// compressions. It returns a writer implementing the compression and an the
+// compressions. It returns a writer implementing the compression and the
// correct value that the caller can set in the response header.
func negotiateEncodingWriter(r *http.Request, rw io.Writer, compressions []string) (_ io.Writer, encodingHeaderValue string, closeWriter func(), _ error) {
if len(compressions) == 0 {
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go
index d3482c40..02485797 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_client.go
@@ -75,10 +75,10 @@ func InstrumentRoundTripperCounter(counter *prometheus.CounterVec, next http.Rou
resp, err := next.RoundTrip(r)
if err == nil {
l := labels(code, method, r.Method, resp.StatusCode, rtOpts.extraMethods...)
- for label, resolve := range rtOpts.extraLabelsFromCtx {
- l[label] = resolve(resp.Request.Context())
+ for label, resolve := range rtOpts.extraLabelsFromRequest {
+ l[label] = resolve(resp.Request)
}
- addWithExemplar(counter.With(l), 1, rtOpts.getExemplarFn(r.Context()))
+ addWithExemplar(counter.With(l), 1, rtOpts.getExemplarFn(r))
}
return resp, err
}
@@ -119,10 +119,10 @@ func InstrumentRoundTripperDuration(obs prometheus.ObserverVec, next http.RoundT
resp, err := next.RoundTrip(r)
if err == nil {
l := labels(code, method, r.Method, resp.StatusCode, rtOpts.extraMethods...)
- for label, resolve := range rtOpts.extraLabelsFromCtx {
- l[label] = resolve(resp.Request.Context())
+ for label, resolve := range rtOpts.extraLabelsFromRequest {
+ l[label] = resolve(resp.Request)
}
- observeWithExemplar(obs.With(l), time.Since(start).Seconds(), rtOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), time.Since(start).Seconds(), rtOpts.getExemplarFn(r))
}
return resp, err
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go
index 9332b024..9dec091a 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/instrument_server.go
@@ -28,24 +28,36 @@ import (
// magicString is used for the hacky label test in checkLabels. Remove once fixed.
const magicString = "zZgWfBxLqvG8kc8IMv3POi2Bb0tZI3vAnBx+gBaFi9FyPzB/CzKUer1yufDa"
-// observeWithExemplar is a wrapper for [prometheus.ExemplarAdder.ExemplarObserver],
-// which falls back to [prometheus.Observer.Observe] if no labels are provided.
+// observeWithExemplar records val on obs. If labels is non-nil and obs
+// implements [prometheus.ExemplarObserver], the exemplar is attached via
+// ObserveWithExemplar; otherwise the exemplar is dropped and the value is
+// recorded with a plain [prometheus.Observer.Observe]. This mirrors the
+// safe-cast pattern in [prometheus.Timer.ObserveDurationWithExemplar] and
+// ensures we never panic when callers pass an ObserverVec backed by a
+// summary, which cannot carry exemplars in the Prometheus exposition format.
func observeWithExemplar(obs prometheus.Observer, val float64, labels map[string]string) {
- if labels == nil {
- obs.Observe(val)
- return
+ if labels != nil {
+ if eo, ok := obs.(prometheus.ExemplarObserver); ok {
+ eo.ObserveWithExemplar(val, labels)
+ return
+ }
}
- obs.(prometheus.ExemplarObserver).ObserveWithExemplar(val, labels)
+ obs.Observe(val)
}
-// addWithExemplar is a wrapper for [prometheus.ExemplarAdder.AddWithExemplar],
-// which falls back to [prometheus.Counter.Add] if no labels are provided.
-func addWithExemplar(obs prometheus.Counter, val float64, labels map[string]string) {
- if labels == nil {
- obs.Add(val)
- return
+// addWithExemplar records val on c. If labels is non-nil and c implements
+// [prometheus.ExemplarAdder], the exemplar is attached via AddWithExemplar;
+// otherwise the exemplar is dropped and the value is recorded with a plain
+// [prometheus.Counter.Add]. The safe-cast keeps the helper robust against
+// custom Counter implementations that do not advertise exemplar support.
+func addWithExemplar(c prometheus.Counter, val float64, labels map[string]string) {
+ if labels != nil {
+ if ea, ok := c.(prometheus.ExemplarAdder); ok {
+ ea.AddWithExemplar(val, labels)
+ return
+ }
}
- obs.(prometheus.ExemplarAdder).AddWithExemplar(val, labels)
+ c.Add(val)
}
// InstrumentHandlerInFlight is a middleware that wraps the provided
@@ -97,10 +109,10 @@ func InstrumentHandlerDuration(obs prometheus.ObserverVec, next http.Handler, op
next.ServeHTTP(d, r)
l := labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r))
}
}
@@ -108,10 +120,10 @@ func InstrumentHandlerDuration(obs prometheus.ObserverVec, next http.Handler, op
now := time.Now()
next.ServeHTTP(w, r)
l := labels(code, method, r.Method, 0, hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r))
}
}
@@ -147,10 +159,10 @@ func InstrumentHandlerCounter(counter *prometheus.CounterVec, next http.Handler,
next.ServeHTTP(d, r)
l := labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- addWithExemplar(counter.With(l), 1, hOpts.getExemplarFn(r.Context()))
+ addWithExemplar(counter.With(l), 1, hOpts.getExemplarFn(r))
}
}
@@ -158,10 +170,10 @@ func InstrumentHandlerCounter(counter *prometheus.CounterVec, next http.Handler,
next.ServeHTTP(w, r)
l := labels(code, method, r.Method, 0, hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- addWithExemplar(counter.With(l), 1, hOpts.getExemplarFn(r.Context()))
+ addWithExemplar(counter.With(l), 1, hOpts.getExemplarFn(r))
}
}
@@ -200,10 +212,10 @@ func InstrumentHandlerTimeToWriteHeader(obs prometheus.ObserverVec, next http.Ha
now := time.Now()
d := newDelegator(w, func(status int) {
l := labels(code, method, r.Method, status, hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), time.Since(now).Seconds(), hOpts.getExemplarFn(r))
})
next.ServeHTTP(d, r)
}
@@ -244,10 +256,10 @@ func InstrumentHandlerRequestSize(obs prometheus.ObserverVec, next http.Handler,
size := computeApproximateRequestSize(r)
l := labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), float64(size), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), float64(size), hOpts.getExemplarFn(r))
}
}
@@ -256,10 +268,10 @@ func InstrumentHandlerRequestSize(obs prometheus.ObserverVec, next http.Handler,
size := computeApproximateRequestSize(r)
l := labels(code, method, r.Method, 0, hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), float64(size), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), float64(size), hOpts.getExemplarFn(r))
}
}
@@ -296,10 +308,10 @@ func InstrumentHandlerResponseSize(obs prometheus.ObserverVec, next http.Handler
next.ServeHTTP(d, r)
l := labels(code, method, r.Method, d.Status(), hOpts.extraMethods...)
- for label, resolve := range hOpts.extraLabelsFromCtx {
- l[label] = resolve(r.Context())
+ for label, resolve := range hOpts.extraLabelsFromRequest {
+ l[label] = resolve(r)
}
- observeWithExemplar(obs.With(l), float64(d.Written()), hOpts.getExemplarFn(r.Context()))
+ observeWithExemplar(obs.With(l), float64(d.Written()), hOpts.getExemplarFn(r))
})
}
@@ -366,7 +378,7 @@ func checkLabels(c prometheus.Collector) (code, method bool) {
panic("metric partitioned with non-supported labels")
}
}
- return
+ return code, method
}
func isLabelCurried(c prometheus.Collector, label string) bool {
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go
index 5d4383aa..d4c0954f 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/promhttp/option.go
@@ -15,6 +15,7 @@ package promhttp
import (
"context"
+ "net/http"
"github.com/prometheus/client_golang/prometheus"
)
@@ -24,28 +25,31 @@ type Option interface {
apply(*options)
}
+// LabelValueFromRequest is used to compute the label value from request.
+type LabelValueFromRequest func(request *http.Request) string
+
// LabelValueFromCtx are used to compute the label value from request context.
// Context can be filled with values from request through middleware.
type LabelValueFromCtx func(ctx context.Context) string
// options store options for both a handler or round tripper.
type options struct {
- extraMethods []string
- getExemplarFn func(requestCtx context.Context) prometheus.Labels
- extraLabelsFromCtx map[string]LabelValueFromCtx
+ extraMethods []string
+ getExemplarFn func(req *http.Request) prometheus.Labels
+ extraLabelsFromRequest map[string]LabelValueFromRequest
}
func defaultOptions() *options {
return &options{
- getExemplarFn: func(ctx context.Context) prometheus.Labels { return nil },
- extraLabelsFromCtx: map[string]LabelValueFromCtx{},
+ getExemplarFn: func(req *http.Request) prometheus.Labels { return nil },
+ extraLabelsFromRequest: map[string]LabelValueFromRequest{},
}
}
func (o *options) emptyDynamicLabels() prometheus.Labels {
labels := prometheus.Labels{}
- for label := range o.extraLabelsFromCtx {
+ for label := range o.extraLabelsFromRequest {
labels[label] = ""
}
@@ -66,19 +70,39 @@ func WithExtraMethods(methods ...string) Option {
})
}
-// WithExemplarFromContext allows to inject function that will get exemplar from context that will be put to counter and histogram metrics.
+// WithExemplarFromRequest allows you to inject a function that will get exemplar from request that will be put to counter and histogram metrics.
// If the function returns nil labels or the metric does not support exemplars, no exemplar will be added (noop), but
// metric will continue to observe/increment.
-func WithExemplarFromContext(getExemplarFn func(requestCtx context.Context) prometheus.Labels) Option {
+func WithExemplarFromRequest(getExemplarFn func(req *http.Request) prometheus.Labels) Option {
return optionApplyFunc(func(o *options) {
o.getExemplarFn = getExemplarFn
})
}
+// WithExemplarFromContext allows you to inject a function that will get exemplar from context that will be put to counter and histogram metrics.
+// If the function returns nil labels or the metric does not support exemplars, no exemplar will be added (noop), but
+// metric will continue to observe/increment.
+func WithExemplarFromContext(getExemplarFn func(requestCtx context.Context) prometheus.Labels) Option {
+ return optionApplyFunc(func(o *options) {
+ o.getExemplarFn = func(req *http.Request) prometheus.Labels {
+ return getExemplarFn(req.Context())
+ }
+ })
+}
+
+// WithLabelFromRequest registers a label for dynamic resolution with access to the request.
+func WithLabelFromRequest(name string, valueFn LabelValueFromRequest) Option {
+ return optionApplyFunc(func(o *options) {
+ o.extraLabelsFromRequest[name] = valueFn
+ })
+}
+
// WithLabelFromCtx registers a label for dynamic resolution with access to context.
// See the example for ExampleInstrumentHandlerWithLabelResolver for example usage
func WithLabelFromCtx(name string, valueFn LabelValueFromCtx) Option {
return optionApplyFunc(func(o *options) {
- o.extraLabelsFromCtx[name] = valueFn
+ o.extraLabelsFromRequest[name] = func(req *http.Request) string {
+ return valueFn(req.Context())
+ }
})
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go
index c6fd2f58..ed0681c8 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/registry.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/registry.go
@@ -214,6 +214,19 @@ func (err AlreadyRegisteredError) Error() string {
// by a Gatherer to report multiple errors during MetricFamily gathering.
type MultiError []error
+// SafeMultiError is a thread-safe wrapper around MultiError using a mutex.
+type SafeMultiError struct {
+ mu sync.Mutex
+ errs MultiError
+}
+
+// Appends the provided error to the contained MultiError in a thread-safe way.
+func (s *SafeMultiError) Append(err error) {
+ s.mu.Lock()
+ s.errs.Append(err)
+ s.mu.Unlock()
+}
+
// Error formats the contained errors as a bullet point list, preceded by the
// total number of errors. Note that this results in a multi-line string.
func (errs MultiError) Error() string {
@@ -408,6 +421,16 @@ func (r *Registry) MustRegister(cs ...Collector) {
}
}
+// MustGather implements Gatherer.
+// Wraps around Gather and panics if Gather fails for any reason.
+func (r *Registry) MustGather() []*dto.MetricFamily {
+ mfs, err := r.Gather()
+ if err != nil {
+ panic(err)
+ }
+ return mfs
+}
+
// Gather implements Gatherer.
func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
r.mtx.RLock()
@@ -423,7 +446,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
uncheckedMetricChan = make(chan Metric, capMetricChan)
metricHashes = map[uint64]struct{}{}
wg sync.WaitGroup
- errs MultiError // The collected errors to return in the end.
+ safeErrs = &SafeMultiError{} // To collect errors in a threadsafe way
registeredDescIDs map[uint64]struct{} // Only used for pedantic checks
)
@@ -453,9 +476,9 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
for {
select {
case collector := <-checkedCollectors:
- collector.Collect(checkedMetricChan)
+ safeErrs.Append((safeCollect(collector, checkedMetricChan)))
case collector := <-uncheckedCollectors:
- collector.Collect(uncheckedMetricChan)
+ safeErrs.Append(safeCollect(collector, uncheckedMetricChan))
default:
return
}
@@ -499,7 +522,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
cmc = nil
break
}
- errs.Append(processMetric(
+ safeErrs.Append(processMetric(
metric, metricFamiliesByName,
metricHashes,
registeredDescIDs,
@@ -509,7 +532,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
umc = nil
break
}
- errs.Append(processMetric(
+ safeErrs.Append(processMetric(
metric, metricFamiliesByName,
metricHashes,
nil,
@@ -526,7 +549,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
cmc = nil
break
}
- errs.Append(processMetric(
+ safeErrs.Append(processMetric(
metric, metricFamiliesByName,
metricHashes,
registeredDescIDs,
@@ -536,7 +559,7 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
umc = nil
break
}
- errs.Append(processMetric(
+ safeErrs.Append(processMetric(
metric, metricFamiliesByName,
metricHashes,
nil,
@@ -556,7 +579,8 @@ func (r *Registry) Gather() ([]*dto.MetricFamily, error) {
break
}
}
- return internal.NormalizeMetricFamilies(metricFamiliesByName), errs.MaybeUnwrap()
+
+ return internal.NormalizeMetricFamilies(metricFamiliesByName), safeErrs.errs.MaybeUnwrap()
}
// Describe implements Collector.
@@ -571,6 +595,24 @@ func (r *Registry) Describe(ch chan<- *Desc) {
}
}
+// Helper wrapper around Collector.Collect.
+// It tries to collect from the channel, recovers on panic and
+// if it has recovered from a panic, then it sends an InvalidMetric into
+// the channel with an InvalidDesc, and an error that includes a stack trace.
+func safeCollect(c Collector, ch chan<- Metric) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ buf := make([]byte, 64<<10) // 64 KB
+ n := runtime.Stack(buf, false)
+ err = fmt.Errorf("prometheus collector panic recovered: type=%T: error=%v\nstack trace=%s", c, r, buf[:n])
+ ch <- NewInvalidMetric(NewInvalidDesc(err), err)
+ }
+ }()
+ c.Collect(ch)
+
+ return err
+}
+
// Collect implements Collector.
func (r *Registry) Collect(ch chan<- Metric) {
r.mtx.RLock()
@@ -599,10 +641,12 @@ func WriteToTextfile(filename string, g Gatherer) error {
mfs, err := g.Gather()
if err != nil {
+ tmp.Close()
return err
}
for _, mf := range mfs {
if _, err := expfmt.MetricFamilyToText(tmp, mf); err != nil {
+ tmp.Close()
return err
}
}
@@ -685,6 +729,9 @@ func processMetric(
metricFamily = &dto.MetricFamily{}
metricFamily.Name = proto.String(desc.fqName)
metricFamily.Help = proto.String(desc.help)
+ if desc.unit != "" {
+ metricFamily.Unit = proto.String(desc.unit)
+ }
// TODO(beorn7): Simplify switch once Desc has type.
switch {
case dtoMetric.Gauge != nil:
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go
index ac5203c6..c12b8d13 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/summary.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/summary.go
@@ -101,6 +101,9 @@ type SummaryOpts struct {
// string.
Help string
+ // Unit provides the unit of this Summary.
+ Unit string
+
// ConstLabels are used to attach fixed labels to this metric. Metrics
// with the same fully-qualified name must have the same label names in
// their ConstLabels.
@@ -181,11 +184,12 @@ type SummaryVecOpts struct {
// NewSummary creates a new Summary based on the provided SummaryOpts.
func NewSummary(opts SummaryOpts) Summary {
return newSummary(
- NewDesc(
+ V2.NewDesc(
BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
opts.Help,
- nil,
+ UnconstrainedLabels(nil),
opts.ConstLabels,
+ WithUnit(opts.Unit),
),
opts,
)
@@ -578,6 +582,7 @@ func (v2) NewSummaryVec(opts SummaryVecOpts) *SummaryVec {
opts.Help,
opts.VariableLabels,
opts.ConstLabels,
+ WithUnit(opts.Unit),
)
return &SummaryVec{
MetricVec: NewMetricVec(desc, func(lvs ...string) Metric {
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/timer.go b/vendor/github.com/prometheus/client_golang/prometheus/timer.go
index 52344fef..c1318ffb 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/timer.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/timer.go
@@ -37,10 +37,10 @@ type Timer struct {
// or
//
// func TimeMeWithExemplar() {
-// timer := NewTimer(myHistogram)
-// defer timer.ObserveDurationWithExemplar(exemplar)
-// // Do actual work.
-// }
+// timer := NewTimer(myHistogram)
+// defer timer.ObserveDurationWithExemplar(exemplar)
+// // Do actual work.
+// }
func NewTimer(o Observer) *Timer {
return &Timer{
begin: time.Now(),
@@ -66,7 +66,7 @@ func (t *Timer) ObserveDuration() time.Duration {
// ObserveDurationWithExemplar is like ObserveDuration, but it will also
// observe exemplar with the duration unless exemplar is nil or provided Observer can't
-// be casted to ExemplarObserver.
+// be cast to ExemplarObserver.
func (t *Timer) ObserveDurationWithExemplar(exemplar Labels) time.Duration {
d := time.Since(t.begin)
eo, ok := t.observer.(ExemplarObserver)
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/vendor/github.com/prometheus/client_golang/prometheus/vec.go
index 487b4665..121d2a96 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/vec.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/vec.go
@@ -193,9 +193,11 @@ func (m *MetricVec) CurryWith(labels Labels) (*MetricVec, error) {
//
// Keeping the Metric for later use is possible (and should be considered if
// performance is critical), but keep in mind that Reset, DeleteLabelValues and
-// Delete can be used to delete the Metric from the MetricVec. In that case, the
-// Metric will still exist, but it will not be exported anymore, even if a
-// Metric with the same label values is created later.
+// Delete can be used to delete the Metric from the MetricVec. In that case, if
+// you have previously kept a reference to that Metric, the Metric object still
+// exists and can be used, but it will not be exported anymore. If a Metric with
+// the same label values is created later, updates to the old Metric reference
+// will not be exported.
//
// An error is returned if the number of label values is not the same as the
// number of variable labels in Desc (minus any curried labels).
@@ -657,7 +659,7 @@ func inlineLabelValues(lvs []string, curry []curriedLabelValue) []string {
}
var labelsPool = &sync.Pool{
- New: func() interface{} {
+ New: func() any {
return make(Labels)
},
}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go
index 2ed12850..697f5555 100644
--- a/vendor/github.com/prometheus/client_golang/prometheus/wrap.go
+++ b/vendor/github.com/prometheus/client_golang/prometheus/wrap.go
@@ -230,6 +230,7 @@ func wrapDesc(desc *Desc, prefix string, labels Labels) *Desc {
return &Desc{
fqName: desc.fqName,
help: desc.help,
+ unit: desc.unit,
variableLabels: desc.variableLabels,
constLabelPairs: desc.constLabelPairs,
err: fmt.Errorf("attempted wrapping with already existing label name %q", ln),
@@ -238,8 +239,8 @@ func wrapDesc(desc *Desc, prefix string, labels Labels) *Desc {
constLabels[ln] = lv
}
// NewDesc will do remaining validations.
- newDesc := V2.NewDesc(prefix+desc.fqName, desc.help, desc.variableLabels, constLabels)
- // Propagate errors if there was any. This will override any errer
+ newDesc := V2.NewDesc(prefix+desc.fqName, desc.help, desc.variableLabels, constLabels, WithUnit(desc.unit))
+ // Propagate errors if there was any. This will override any error
// created by NewDesc above, i.e. earlier errors get precedence.
if desc.err != nil {
newDesc.err = desc.err
diff --git a/vendor/github.com/prometheus/procfs/net_wireless.go b/vendor/github.com/prometheus/procfs/net_wireless.go
index 69d07944..f74dd3be 100644
--- a/vendor/github.com/prometheus/procfs/net_wireless.go
+++ b/vendor/github.com/prometheus/procfs/net_wireless.go
@@ -114,47 +114,47 @@ func parseWireless(r io.Reader) ([]*Wireless, error) {
qlink, err := strconv.Atoi(strings.TrimSuffix(stats[1], "."))
if err != nil {
- return nil, fmt.Errorf("%w: parse Quality:link as integer %q: %w", ErrFileParse, qlink, err)
+ return nil, fmt.Errorf("%w: parse Quality:link as integer %q: %w", ErrFileParse, stats[1], err)
}
qlevel, err := strconv.Atoi(strings.TrimSuffix(stats[2], "."))
if err != nil {
- return nil, fmt.Errorf("%w: Quality:level as integer %q: %w", ErrFileParse, qlevel, err)
+ return nil, fmt.Errorf("%w: Quality:level as integer %q: %w", ErrFileParse, stats[2], err)
}
qnoise, err := strconv.Atoi(strings.TrimSuffix(stats[3], "."))
if err != nil {
- return nil, fmt.Errorf("%w: Quality:noise as integer %q: %w", ErrFileParse, qnoise, err)
+ return nil, fmt.Errorf("%w: Quality:noise as integer %q: %w", ErrFileParse, stats[3], err)
}
dnwid, err := strconv.Atoi(stats[4])
if err != nil {
- return nil, fmt.Errorf("%w: Discarded:nwid as integer %q: %w", ErrFileParse, dnwid, err)
+ return nil, fmt.Errorf("%w: Discarded:nwid as integer %q: %w", ErrFileParse, stats[4], err)
}
dcrypt, err := strconv.Atoi(stats[5])
if err != nil {
- return nil, fmt.Errorf("%w: Discarded:crypt as integer %q: %w", ErrFileParse, dcrypt, err)
+ return nil, fmt.Errorf("%w: Discarded:crypt as integer %q: %w", ErrFileParse, stats[5], err)
}
dfrag, err := strconv.Atoi(stats[6])
if err != nil {
- return nil, fmt.Errorf("%w: Discarded:frag as integer %q: %w", ErrFileParse, dfrag, err)
+ return nil, fmt.Errorf("%w: Discarded:frag as integer %q: %w", ErrFileParse, stats[6], err)
}
dretry, err := strconv.Atoi(stats[7])
if err != nil {
- return nil, fmt.Errorf("%w: Discarded:retry as integer %q: %w", ErrFileParse, dretry, err)
+ return nil, fmt.Errorf("%w: Discarded:retry as integer %q: %w", ErrFileParse, stats[7], err)
}
dmisc, err := strconv.Atoi(stats[8])
if err != nil {
- return nil, fmt.Errorf("%w: Discarded:misc as integer %q: %w", ErrFileParse, dmisc, err)
+ return nil, fmt.Errorf("%w: Discarded:misc as integer %q: %w", ErrFileParse, stats[8], err)
}
mbeacon, err := strconv.Atoi(stats[9])
if err != nil {
- return nil, fmt.Errorf("%w: Missed:beacon as integer %q: %w", ErrFileParse, mbeacon, err)
+ return nil, fmt.Errorf("%w: Missed:beacon as integer %q: %w", ErrFileParse, stats[9], err)
}
w := &Wireless{
diff --git a/vendor/github.com/prometheus/procfs/proc_cgroup.go b/vendor/github.com/prometheus/procfs/proc_cgroup.go
index 535c08d6..7e8a1229 100644
--- a/vendor/github.com/prometheus/procfs/proc_cgroup.go
+++ b/vendor/github.com/prometheus/procfs/proc_cgroup.go
@@ -60,7 +60,7 @@ func parseCgroupString(cgroupStr string) (*Cgroup, error) {
}
cgroup.HierarchyID, err = strconv.Atoi(fields[0])
if err != nil {
- return nil, fmt.Errorf("%w: hierarchy ID: %q", ErrFileParse, cgroup.HierarchyID)
+ return nil, fmt.Errorf("%w: hierarchy ID: %q", ErrFileParse, fields[0])
}
if fields[1] != "" {
ssNames := strings.Split(fields[1], ",")
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go
index 3ae08243..733b75dc 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/common.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"net/http"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go
index a7d4b2a8..08ba0778 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"context"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go
index 1c9aa3ff..09a2103f 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/doc.go
@@ -3,4 +3,4 @@
// Package otelhttp provides an http.Handler and functions that are intended
// to be used to add tracing by wrapping existing handlers.
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go
index 204588b8..844363a0 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"net/http"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go
index d032aa84..aeff4160 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/body_wrapper.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/request/body_wrapper.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/request/body_wrapper.go.tmpl
+
// Package request provides types and functionality to handle HTTP request
// handling.
-package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request"
+package request
import (
"io"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/gen.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/gen.go
index 9e00dd2f..98f7bdbf 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/gen.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/gen.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request"
+package request
// Generate request package:
//go:generate gotmpl --body=../../../../../../internal/shared/request/body_wrapper.go.tmpl "--data={}" --out=body_wrapper.go
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go
index f29f9b7c..6b523cb7 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request/resp_writer_wrapper.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/request/resp_writer_wrapper.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package request // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/request/resp_writer_wrapper.go.tmpl
+
+package request
import (
"net/http"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/client.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/client.go
index 0241b08e..c275b5f0 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/client.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/client.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/semconv/client.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/semconv/client.go.tmpl
+
// Package semconv provides OpenTelemetry semantic convention types and
// functionality.
-package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv"
+package semconv
import (
"context"
@@ -20,8 +20,8 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/metric"
- "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/httpconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/httpconv"
)
type HTTPClient struct {
@@ -45,7 +45,7 @@ func NewHTTPClient(meter metric.Meter) HTTPClient {
return client
}
-func (n HTTPClient) Status(code int) (codes.Code, string) {
+func (HTTPClient) Status(code int) (codes.Code, string) {
if code < 100 || code >= 600 {
return codes.Error, fmt.Sprintf("Invalid HTTP status code %d", code)
}
@@ -120,9 +120,7 @@ func (n HTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue {
// Restore any username/password info that was removed.
req.URL.User = userinfo
}
- attrs = append(attrs, semconv.URLFull(u))
-
- attrs = append(attrs, semconv.ServerAddress(requestHost))
+ attrs = append(attrs, semconv.URLFull(u), semconv.ServerAddress(requestHost))
if eligiblePort > 0 {
attrs = append(attrs, semconv.ServerPort(eligiblePort))
}
@@ -138,11 +136,13 @@ func (n HTTPClient) RequestTraceAttrs(req *http.Request) []attribute.KeyValue {
}
// ResponseTraceAttrs returns trace attributes for an HTTP response made by a client.
-func (n HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue {
+func (HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue {
/*
below attributes are returned:
- http.response.status_code
- error.type
+ - network.protocol.name (only when it is not "http")
+ - network.protocol.version
*/
var count int
if resp.StatusCode > 0 {
@@ -153,6 +153,21 @@ func (n HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue
count++
}
+ // The protocol version is only known for certain once the response
+ // arrives: req.Proto reflects what the caller asked for, but the
+ // transport may negotiate a different version (for example HTTP/2 via
+ // ALPN). Report resp.Proto here so it overrides the request-time value
+ // on the span. As in RequestTraceAttrs, network.protocol.name is omitted
+ // when it is "http": the spec only requires it when the name differs from
+ // the protocol implied by http.request.method.
+ protoName, protoVersion := netProtocol(resp.Proto)
+ if protoName != "" && protoName != "http" {
+ count++
+ }
+ if protoVersion != "" {
+ count++
+ }
+
attrs := make([]attribute.KeyValue, 0, count)
if resp.StatusCode > 0 {
attrs = append(attrs, semconv.HTTPResponseStatusCode(resp.StatusCode))
@@ -162,10 +177,17 @@ func (n HTTPClient) ResponseTraceAttrs(resp *http.Response) []attribute.KeyValue
errorType := strconv.Itoa(resp.StatusCode)
attrs = append(attrs, semconv.ErrorTypeKey.String(errorType))
}
+
+ if protoName != "" && protoName != "http" {
+ attrs = append(attrs, semconv.NetworkProtocolName(protoName))
+ }
+ if protoVersion != "" {
+ attrs = append(attrs, semconv.NetworkProtocolVersion(protoVersion))
+ }
return attrs
}
-func (n HTTPClient) method(method string) (attribute.KeyValue, attribute.KeyValue) {
+func (HTTPClient) method(method string) (attribute.KeyValue, attribute.KeyValue) {
if method == "" {
return semconv.HTTPRequestMethodOther, attribute.KeyValue{}
}
@@ -180,7 +202,7 @@ func (n HTTPClient) method(method string) (attribute.KeyValue, attribute.KeyValu
return semconv.HTTPRequestMethodOther, orig
}
-func (n HTTPClient) MetricAttributes(req *http.Request, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue {
+func (n HTTPClient) MetricAttributes(req *http.Request, resp *http.Response, statusCode int, additionalAttributes []attribute.KeyValue) []attribute.KeyValue {
num := len(additionalAttributes) + 2
var h string
if req.URL != nil {
@@ -200,7 +222,14 @@ func (n HTTPClient) MetricAttributes(req *http.Request, statusCode int, addition
num++
}
- protoName, protoVersion := netProtocol(req.Proto)
+ // Prefer the negotiated protocol reported on the response: req.Proto is
+ // only what the caller asked for, and the transport may have upgraded
+ // the connection (for example HTTP/2 via ALPN).
+ proto := req.Proto
+ if resp != nil && resp.Proto != "" {
+ proto = resp.Proto
+ }
+ protoName, protoVersion := netProtocol(proto)
if protoName != "" {
num++
}
@@ -213,7 +242,8 @@ func (n HTTPClient) MetricAttributes(req *http.Request, statusCode int, addition
}
attributes := slices.Grow(additionalAttributes, num)
- attributes = append(attributes,
+ attributes = append(
+ attributes,
semconv.HTTPRequestMethodKey.String(standardizeHTTPMethod(req.Method)),
semconv.ServerAddress(requestHost),
n.scheme(req),
@@ -249,7 +279,7 @@ func (o MetricOpts) AddOptions() metric.AddOption {
}
func (n HTTPClient) MetricOptions(ma MetricAttributes) MetricOpts {
- attributes := n.MetricAttributes(ma.Req, ma.StatusCode, ma.AdditionalAttributes)
+ attributes := n.MetricAttributes(ma.Req, ma.Resp, ma.StatusCode, ma.AdditionalAttributes)
if ma.StatusCode == 0 && ma.Err != nil {
attributes = append(attributes, n.ErrorType(ma.Err))
}
@@ -269,12 +299,12 @@ func (n HTTPClient) MetricOptions(ma MetricAttributes) MetricOpts {
// type per failure keeps attribute cardinality bounded, as required by the
// OTel spec (error.type SHOULD have low cardinality). Callers that need
// finer-grained error distinctions should inspect the error themselves.
-func (n HTTPClient) ErrorType(err error) attribute.KeyValue {
+func (HTTPClient) ErrorType(err error) attribute.KeyValue {
t := reflect.TypeOf(err)
if t == nil {
return semconv.ErrorTypeOther
}
- if t.Kind() == reflect.Ptr {
+ if t.Kind() == reflect.Pointer {
t = t.Elem()
}
var value string
@@ -307,13 +337,13 @@ func (n HTTPClient) RecordMetrics(ctx context.Context, md MetricData, opts Metri
}
// TraceAttributes returns attributes for httptrace.
-func (n HTTPClient) TraceAttributes(host string) []attribute.KeyValue {
+func (HTTPClient) TraceAttributes(host string) []attribute.KeyValue {
return []attribute.KeyValue{
semconv.ServerAddress(host),
}
}
-func (n HTTPClient) scheme(req *http.Request) attribute.KeyValue {
+func (HTTPClient) scheme(req *http.Request) attribute.KeyValue {
if req.URL != nil && req.URL.Scheme != "" {
return semconv.URLScheme(req.URL.Scheme)
}
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go
index a8a0d58d..fbcd4f6b 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/gen.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv"
+package semconv
// Generate semconv package:
//go:generate gotmpl --body=../../../../../../internal/shared/semconv/bench_test.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\" }" --out=bench_test.go
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/server.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/server.go
index 8e043086..35e744e4 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/server.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/server.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/semconv/server.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/semconv/server.go.tmpl
+
// Package semconv provides OpenTelemetry semantic convention types and
// functionality.
-package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv"
+package semconv
import (
"context"
@@ -20,8 +20,8 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/metric"
- "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/httpconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/httpconv"
)
type RequestTraceAttrsOpts struct {
@@ -67,7 +67,7 @@ func NewHTTPServer(meter metric.Meter) HTTPServer {
// Status returns a span status code and message for an HTTP status code
// value returned by a server. Status codes in the 400-499 range are not
// returned as errors.
-func (n HTTPServer) Status(code int) (codes.Code, string) {
+func (HTTPServer) Status(code int) (codes.Code, string) {
if code < 100 || code >= 600 {
return codes.Error, fmt.Sprintf("Invalid HTTP status code %d", code)
}
@@ -168,7 +168,8 @@ func (n HTTPServer) RequestTraceAttrs(server string, req *http.Request, opts Req
}
attrs := make([]attribute.KeyValue, 0, count)
- attrs = append(attrs,
+ attrs = append(
+ attrs,
semconv.ServerAddress(host),
method,
scheme,
@@ -216,7 +217,7 @@ func (n HTTPServer) RequestTraceAttrs(server string, req *http.Request, opts Req
return attrs
}
-func (s HTTPServer) NetworkTransportAttr(network string) []attribute.KeyValue {
+func (HTTPServer) NetworkTransportAttr(network string) []attribute.KeyValue {
attr := semconv.NetworkTransportPipe
switch network {
case "tcp", "tcp4", "tcp6":
@@ -239,7 +240,11 @@ type ServerMetricData struct {
}
type MetricAttributes struct {
- Req *http.Request
+ Req *http.Request
+ // Resp is the client response, if any. It is only consulted by
+ // HTTPClient.MetricAttributes to source the negotiated protocol version;
+ // server-side metric recording ignores it.
+ Resp *http.Response
StatusCode int
Route string
AdditionalAttributes []attribute.KeyValue
@@ -274,7 +279,7 @@ func (n HTTPServer) RecordMetrics(ctx context.Context, md ServerMetricData) {
// It returns "{method} {route}" when the request has a pattern,
// or just "{method}" when no route is available.
// Non-standard HTTP methods are replaced by "HTTP".
-func (n HTTPServer) SpanName(r *http.Request) string {
+func (HTTPServer) SpanName(r *http.Request) string {
method := strings.ToUpper(r.Method)
if _, ok := methodLookup[method]; !ok {
method = "HTTP"
@@ -287,7 +292,7 @@ func (n HTTPServer) SpanName(r *http.Request) string {
return method
}
-func (n HTTPServer) method(method string) (attribute.KeyValue, attribute.KeyValue) {
+func (HTTPServer) method(method string) (attribute.KeyValue, attribute.KeyValue) {
if method == "" {
return semconv.HTTPRequestMethodOther, attribute.KeyValue{}
}
@@ -314,7 +319,7 @@ func (n HTTPServer) scheme(https bool) attribute.KeyValue { //nolint:revive // i
//
// If any of the fields in the ResponseTelemetry are not set the attribute will
// be omitted.
-func (n HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue {
+func (HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyValue {
var count int
if resp.ReadBytes > 0 {
@@ -330,17 +335,20 @@ func (n HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyVa
attributes := make([]attribute.KeyValue, 0, count)
if resp.ReadBytes > 0 {
- attributes = append(attributes,
+ attributes = append(
+ attributes,
semconv.HTTPRequestBodySize(int(resp.ReadBytes)),
)
}
if resp.WriteBytes > 0 {
- attributes = append(attributes,
+ attributes = append(
+ attributes,
semconv.HTTPResponseBodySize(int(resp.WriteBytes)),
)
}
if resp.StatusCode > 0 {
- attributes = append(attributes,
+ attributes = append(
+ attributes,
semconv.HTTPResponseStatusCode(resp.StatusCode),
)
}
@@ -349,7 +357,7 @@ func (n HTTPServer) ResponseTraceAttrs(resp ResponseTelemetry) []attribute.KeyVa
}
// Route returns the attribute for the route.
-func (n HTTPServer) Route(route string) attribute.KeyValue {
+func (HTTPServer) Route(route string) attribute.KeyValue {
return semconv.HTTPRoute(route)
}
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go
index d6842ed2..0de0bd83 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv/util.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/semconv/util.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package semconv // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/semconv/util.go.tmpl
+
+package semconv
import (
"net"
@@ -15,7 +15,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
- semconvNew "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconvNew "go.opentelemetry.io/otel/semconv/v1.43.0"
)
// SplitHostPort splits a network address hostport of the form "host",
@@ -32,29 +32,29 @@ func SplitHostPort(hostport string) (host string, port int) {
addrEnd := strings.LastIndexByte(hostport, ']')
if addrEnd < 0 {
// Invalid hostport.
- return
+ return host, port
}
if i := strings.LastIndexByte(hostport[addrEnd:], ':'); i < 0 {
host = hostport[1:addrEnd]
- return
+ return host, port
}
} else {
if i := strings.LastIndexByte(hostport, ':'); i < 0 {
host = hostport
- return
+ return host, port
}
}
host, pStr, err := net.SplitHostPort(hostport)
if err != nil {
- return
+ return host, port
}
p, err := strconv.ParseUint(pStr, 10, 16)
if err != nil {
- return
+ return host, port
}
- return host, int(p) //nolint:gosec // Byte size checked 16 above.
+ return host, int(p)
}
func requiredHTTPPort(https bool, port int) int { //nolint:revive // ignore linter
@@ -84,7 +84,7 @@ func httpRoute(pattern string) string {
return ""
}
-func netProtocol(proto string) (name string, version string) {
+func netProtocol(proto string) (name, version string) {
name, version, _ = strings.Cut(proto, "/")
switch name {
case "HTTP":
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go
index d62ce44b..8362b824 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/labeler.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"context"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go
index 9476ef01..9b6c0a88 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/start_time_context.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"context"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go
index b15895ce..82501eab 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/transport.go
@@ -1,10 +1,11 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
import (
"context"
+ "fmt"
"io"
"net/http"
"net/http/httptrace"
@@ -15,7 +16,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/propagation"
- otelsemconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ otelsemconv "go.opentelemetry.io/otel/semconv/v1.43.0"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request"
@@ -142,6 +143,9 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) {
t.propagators.Inject(ctx, propagation.HeaderCarrier(r.Header))
res, err := t.rt.RoundTrip(r)
+ if err == nil {
+ res, err = ensureResponseBody(t.rt, r, res)
+ }
// Record the metrics on error or no error.
statusCode := 0
@@ -160,6 +164,7 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) {
},
t.semconv.MetricOptions(semconv.MetricAttributes{
Req: r,
+ Resp: res,
StatusCode: statusCode,
Err: err,
AdditionalAttributes: append(labeler.Get(), t.metricAttributesFromRequest(r)...),
@@ -183,6 +188,20 @@ func (t *Transport) RoundTrip(r *http.Request) (*http.Response, error) {
return res, nil
}
+func ensureResponseBody(rt http.RoundTripper, r *http.Request, res *http.Response) (*http.Response, error) {
+ switch {
+ case res == nil:
+ return nil, fmt.Errorf("http: RoundTripper implementation (%T) returned a nil *Response with a nil error", rt)
+ case res.Body != nil:
+ return res, nil
+ case res.ContentLength > 0 && r.Method != http.MethodHead:
+ return nil, fmt.Errorf("http: RoundTripper implementation (%T) returned a *Response with content length %d but a nil Body", rt, res.ContentLength)
+ default:
+ res.Body = http.NoBody
+ return res, nil
+ }
+}
+
func (t *Transport) metricAttributesFromRequest(r *http.Request) []attribute.KeyValue {
var attributeForRequest []attribute.KeyValue
if t.metricAttributesFn != nil {
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go
index 2feb8850..b757d6e9 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/version.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otelhttp // import "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+package otelhttp
// Version is the current release version of the otelhttp instrumentation.
-const Version = "0.69.0"
+const Version = "0.70.0"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/doc.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/doc.go
index aa33a09b..125362ba 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/doc.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/doc.go
@@ -2,4 +2,4 @@
// SPDX-License-Identifier: Apache-2.0
// Package runtime implements the conventional runtime metrics specified by OpenTelemetry.
-package runtime // import "go.opentelemetry.io/contrib/instrumentation/runtime"
+package runtime
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/doc.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/doc.go
index 9fb44efa..c9657fcb 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/doc.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/doc.go
@@ -19,4 +19,4 @@
// runtime.go.mem.heap_sys (bytes) Bytes of heap memory obtained from the OS
// runtime.go.mem.live_objects - Number of live objects is the number of cumulative Mallocs - Frees
// runtime.uptime (ms) Milliseconds since application was initialized
-package deprecatedruntime // import "go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime"
+package deprecatedruntime
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/runtime.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/runtime.go
index 941d5526..bf695ebe 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/runtime.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime/runtime.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package deprecatedruntime // import "go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime"
+package deprecatedruntime
import (
"context"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/x/x.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/x/x.go
index 95a05d59..9dd604ff 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/internal/x/x.go
@@ -5,7 +5,7 @@
//
// This package should only be used for features defined in the specification.
// It should not be used for experiments or new project ideas.
-package x // import "go.opentelemetry.io/contrib/instrumentation/runtime/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/options.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/options.go
index 580dc5dc..f03f545a 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/options.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/options.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package runtime // import "go.opentelemetry.io/contrib/instrumentation/runtime"
+package runtime
import (
"time"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/producer.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/producer.go
index ec3c69ea..9268b729 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/producer.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/producer.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package runtime // import "go.opentelemetry.io/contrib/instrumentation/runtime"
+package runtime
import (
"context"
@@ -105,8 +105,8 @@ func convertRuntimeHistogram(runtimeHist *metrics.Float64Histogram, ts time.Time
count += c
// This computed sum is an underestimate, since it assumes each
// observation happens at the bucket's lower bound.
- if i > 0 && count != 0 {
- sum += bounds[i-1] * float64(count)
+ if i > 0 && c != 0 {
+ sum += bounds[i-1] * float64(c)
}
}
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/runtime.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/runtime.go
index fa444858..394da284 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/runtime.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/runtime.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package runtime // import "go.opentelemetry.io/contrib/instrumentation/runtime"
+package runtime
import (
"context"
@@ -12,7 +12,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/metric"
- "go.opentelemetry.io/otel/semconv/v1.41.0/goconv"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/goconv"
"go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime"
"go.opentelemetry.io/contrib/instrumentation/runtime/internal/x"
diff --git a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/version.go b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/version.go
index e0810726..1c7666f7 100644
--- a/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/version.go
+++ b/vendor/go.opentelemetry.io/contrib/instrumentation/runtime/version.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package runtime // import "go.opentelemetry.io/contrib/instrumentation/runtime"
+package runtime
// Version is the current release version of the runtime instrumentation.
-const Version = "0.69.0"
+const Version = "0.70.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/client.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/client.go
index 22b84505..ee6b018d 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/client.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/client.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+package otlpmetricgrpc
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/config.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/config.go
index 47eb85e9..8f6fec81 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/config.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+package otlpmetricgrpc
import (
"fmt"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/doc.go
index 62b05626..938cb6a4 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/doc.go
@@ -84,4 +84,4 @@ the experimental features.
[Explicit Bucket Histogram Aggregation]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.26.0/specification/metrics/sdk.md#explicit-bucket-histogram-aggregation
[Base2 Exponential Bucket Histogram Aggregation]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.26.0/specification/metrics/sdk.md#base2-exponential-bucket-histogram-aggregation
*/
-package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+package otlpmetricgrpc
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go
index b567800e..302c992e 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+package otlpmetricgrpc
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter/counter.go
index df6b830d..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/envconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/envconfig/envconfig.go
index 2cd98b92..87764a69 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/envconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/envconfig/envconfig.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
+
// Package envconfig provides functionality to parse configuration from
// environment variables.
-package envconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/envconfig"
+package envconfig
import (
"crypto/tls"
@@ -60,7 +60,7 @@ func WithString(n string, fn func(string)) func(e *EnvOptionsReader) {
func WithBool(n string, fn func(bool)) ConfigFn {
return func(e *EnvOptionsReader) {
if v, ok := e.GetEnvValue(n); ok {
- b := strings.ToLower(v) == "true"
+ b := strings.EqualFold(v, "true")
fn(b)
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/gen.go
index c94f85ef..df08789b 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/gen.go
@@ -2,12 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal functionally for the otlpmetricgrpc package.
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal"
+package internal
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess.go.tmpl "--data={}" --out=partialsuccess.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess_test.go.tmpl "--data={}" --out=partialsuccess_test.go
-//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target.go.tmpl "--data={ \"pkg\": \"observ\", \"pkg_path\": \"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ\" }" --out=observ/target.go
+//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target.go.tmpl "--data={ \"pkg\": \"observ\" }" --out=observ/target.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target_test.go.tmpl "--data={ \"pkg\": \"observ\" }" --out=observ/target_test.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/retry/retry.go.tmpl "--data={}" --out=retry/retry.go
@@ -34,7 +34,7 @@ package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/o
//go:generate gotmpl --body=../../../../../internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl "--data={}" --out=transform/metricdata.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/otlpmetric/transform/metricdata_test.go.tmpl "--data={}" --out=transform/metricdata_test.go
-//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
//go:generate gotmpl --body=../../../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc\" }" --out=x/x.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/instrumentation.go
index 2b4dbb5d..a8ffd871 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides self-observability metrics for OTLP metric exporters.
// This is an experimental feature controlled by the x.Observability feature flag.
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ"
+package observ
import (
"context"
@@ -17,8 +17,8 @@ import (
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/sdk"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/target.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/target.go
index 0be4501e..4d066589 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/target.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ/target.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/observ/target.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/observ"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/observ/target.go.tmpl
+
+package observ
import (
"errors"
@@ -41,11 +41,10 @@ func ParseCanonicalTarget(target string) (string, int, error) {
const sep = "://"
// Find scheme. Do not allocate the string by using url.Parse.
- idx := strings.Index(target, sep)
- if idx == -1 {
+ scheme, endpoint, found := strings.Cut(target, sep)
+ if !found {
return "", -1, fmt.Errorf("invalid target %q: missing scheme", target)
}
- scheme, endpoint := target[:idx], target[idx+len(sep):]
// Check for unix schemes.
if scheme == schemeUnix || scheme == schemeUnixAbstract {
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/envconfig.go
index 7f947273..700dc0d1 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/envconfig.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/envconfig.go.tmpl
+
+package oconf
import (
"crypto/tls"
@@ -51,31 +51,37 @@ func getOptionsFromEnv() []GenericOption {
tlsConf := &tls.Config{}
DefaultEnvOptionsReader.Apply(
envconfig.WithURL("ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Metrics.Endpoint = u.Host
- // For OTLP/HTTP endpoint URLs without a per-signal
- // configuration, the passed endpoint is used as a base URL
- // and the signals are sent to these paths relative to that.
- cfg.Metrics.URLPath = path.Join(u.Path, DefaultMetricsPath)
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Metrics.Endpoint = u.Host
+ // For OTLP/HTTP endpoint URLs without a per-signal
+ // configuration, the passed endpoint is used as a base URL
+ // and the signals are sent to these paths relative to that.
+ cfg.Metrics.URLPath = path.Join(u.Path, DefaultMetricsPath)
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithURL("METRICS_ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Metrics.Endpoint = u.Host
- // For endpoint URLs for OTLP/HTTP per-signal variables, the
- // URL MUST be used as-is without any modification. The only
- // exception is that if an URL contains no path part, the root
- // path / MUST be used.
- path := u.Path
- if path == "" {
- path = "/"
- }
- cfg.Metrics.URLPath = path
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Metrics.Endpoint = u.Host
+ // For endpoint URLs for OTLP/HTTP per-signal variables, the
+ // URL MUST be used as-is without any modification. The only
+ // exception is that if an URL contains no path part, the root
+ // path / MUST be used.
+ path := u.Path
+ if path == "" {
+ path = "/"
+ }
+ cfg.Metrics.URLPath = path
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithCertPool("CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
envconfig.WithCertPool("METRICS_CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
@@ -152,7 +158,7 @@ func withInsecure(b bool) GenericOption {
}
func withTLSConfig(c *tls.Config, fn func(*tls.Config)) func(e *envconfig.EnvOptionsReader) {
- return func(e *envconfig.EnvOptionsReader) {
+ return func(*envconfig.EnvOptionsReader) {
if c.RootCAs != nil || len(c.Certificates) > 0 {
fn(c)
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go
index b89d7eeb..4b4f164e 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/options.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/options.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/options.go.tmpl
+
// Package oconf provides configuration for the otlpmetric exporters.
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf"
+package oconf
import (
"crypto/tls"
@@ -112,7 +112,7 @@ func NewHTTPConfig(opts ...HTTPOption) Config {
// cleanPath returns a path with all spaces trimmed. If urlPath is empty,
// defaultPath is returned instead.
-func cleanPath(urlPath string, defaultPath string) string {
+func cleanPath(urlPath, defaultPath string) string {
tmp := strings.TrimSpace(urlPath)
if tmp == "" || tmp == "." {
return defaultPath
@@ -148,7 +148,7 @@ func NewGRPCConfig(opts ...GRPCOption) Config {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithDefaultServiceConfig(cfg.ServiceConfig))
}
// Prioritize GRPCCredentials over Insecure (passing both is an error).
- if cfg.Metrics.GRPCCredentials != nil {
+ if cfg.Metrics.GRPCCredentials != nil { //nolint:gocritic // if-else is clearer than switch
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(cfg.Metrics.GRPCCredentials))
} else if cfg.Metrics.Insecure {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(insecure.NewCredentials()))
@@ -242,7 +242,7 @@ func (g *splitOption) ApplyHTTPOption(cfg Config) Config {
func (splitOption) private() {}
-func newSplitOption(httpFn func(cfg Config) Config, grpcFn func(cfg Config) Config) GenericOption {
+func newSplitOption(httpFn, grpcFn func(cfg Config) Config) GenericOption {
return &splitOption{httpFn: httpFn, grpcFn: grpcFn}
}
@@ -295,6 +295,11 @@ func WithEndpointURL(v string) GenericOption {
cfg.Metrics.Endpoint = u.Host
cfg.Metrics.URLPath = u.Path
+ if cfg.Metrics.URLPath == "" {
+ // For HTTP exporters, a URL without a path targets the root path. Set it explicitly so the default signal
+ // path is not appended by cleanPath. (URLPath is ignored by gRPC exporters.)
+ cfg.Metrics.URLPath = "/"
+ }
cfg.Metrics.Insecure = u.Scheme != "https"
return cfg
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/optiontypes.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/optiontypes.go
index c18a6b1f..79f77841 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/optiontypes.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/optiontypes.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/optiontypes.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/optiontypes.go.tmpl
+
+package oconf
import "time"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/tls.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/tls.go
index e4547b3a..4ed82885 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/tls.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf/tls.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/tls.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/tls.go.tmpl
+
+package oconf
import (
"crypto/tls"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/partialsuccess.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/partialsuccess.go
index 243abcb1..1138f2e7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/partialsuccess.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/partialsuccess.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/partialsuccess.go
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/partialsuccess.go
+
+package internal
import "fmt"
@@ -41,7 +41,7 @@ func (ps PartialSuccess) As(target any) bool {
}
// Is supports the errors.Is() interface.
-func (ps PartialSuccess) Is(err error) bool {
+func (PartialSuccess) Is(err error) bool {
_, ok := err.(PartialSuccess)
return ok
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry/retry.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry/retry.go
index c14e5ae7..1883d060 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry/retry.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry/retry.go
@@ -1,13 +1,13 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/retry/retry.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/retry/retry.go.tmpl
+
// Package retry provides request retry functionality that can perform
// configurable exponential backoff for transient errors and honor any
// explicit throttle responses received.
-package retry // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry"
+package retry
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/attribute.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/attribute.go
index 96420d42..9fea51b4 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/attribute.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/attribute.go
@@ -1,14 +1,15 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/attribute.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/attribute.go.tmpl
+
+package transform
import (
- "go.opentelemetry.io/otel/attribute"
cpb "go.opentelemetry.io/proto/otlp/common/v1"
+
+ "go.opentelemetry.io/otel/attribute"
)
// AttrIter transforms an attribute iterator into OTLP key-values.
@@ -91,6 +92,12 @@ func Value(v attribute.Value) *cpb.AnyValue {
Values: attrValues(v.AsSlice()),
},
}
+ case attribute.MAP:
+ av.Value = &cpb.AnyValue_KvlistValue{
+ KvlistValue: &cpb.KeyValueList{
+ Values: KeyValues(v.AsMap()),
+ },
+ }
case attribute.STRINGSLICE:
av.Value = &cpb.AnyValue_ArrayValue{
ArrayValue: &cpb.ArrayValue{
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/error.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/error.go
index f03bfec4..72850222 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/error.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/error.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/error.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/error.go.tmpl
+
+package transform
import (
"errors"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/metricdata.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/metricdata.go
index 9c156e91..6c07896a 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/metricdata.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform/metricdata.go
@@ -1,21 +1,22 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl
+
// Package transform provides transformation functionality from the
// sdk/metric/metricdata data-types into OTLP data-types.
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform"
+package transform
import (
"fmt"
"time"
- "go.opentelemetry.io/otel/sdk/metric/metricdata"
cpb "go.opentelemetry.io/proto/otlp/common/v1"
mpb "go.opentelemetry.io/proto/otlp/metrics/v1"
rpb "go.opentelemetry.io/proto/otlp/resource/v1"
+
+ "go.opentelemetry.io/otel/sdk/metric/metricdata"
)
// ResourceMetrics returns an OTLP ResourceMetrics generated from rm. If rm
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/observ.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/observ.go
index cc055ea4..f292e095 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/observ.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/observ.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/x.go
index d4282787..02d7fbef 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc].
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/version.go
index 8ee005c6..4ab57afe 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/version.go
@@ -1,9 +1,9 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetricgrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+package otlpmetricgrpc
// Version is the current release version of the OpenTelemetry OTLP over gRPC metrics exporter in use.
func Version() string {
- return "1.44.0"
+ return "1.45.0"
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/client.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/client.go
index b7ca17fe..41aa7ff3 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/client.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/client.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+package otlpmetrichttp
import (
"bytes"
@@ -341,7 +341,7 @@ func (r *request) reset(ctx context.Context) {
// retryableError represents a request failure that can be retried.
type retryableError struct {
- throttle int64
+ throttle time.Duration
err error
}
@@ -351,15 +351,29 @@ type retryableError struct {
func newResponseError(header http.Header, wrapped error) error {
var rErr retryableError
if v := header.Get("Retry-After"); v != "" {
- if t, err := strconv.ParseInt(v, 10, 64); err == nil {
- rErr.throttle = t
- }
+ rErr.throttle = retryAfterDuration(v)
}
rErr.err = wrapped
return rErr
}
+func retryAfterDuration(v string) time.Duration {
+ if t, err := strconv.ParseInt(v, 10, 64); err == nil && t >= 0 {
+ const maxRetryAfterSeconds = int64(1<<63-1) / int64(time.Second)
+ if t > maxRetryAfterSeconds {
+ return time.Duration(1<<63 - 1)
+ }
+ return time.Duration(t) * time.Second
+ }
+
+ if date, err := http.ParseTime(v); err == nil {
+ return max(time.Until(date), 0)
+ }
+
+ return 0
+}
+
func (e retryableError) Error() string {
if e.err != nil {
return "retry-able request failure: " + e.err.Error()
@@ -401,5 +415,5 @@ func evaluate(err error) (bool, time.Duration) {
return false, 0
}
- return true, time.Duration(rErr.throttle)
+ return true, rErr.throttle
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/config.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/config.go
index c6175507..35e6bb12 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/config.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+package otlpmetrichttp
import (
"crypto/tls"
@@ -86,6 +86,11 @@ func WithEndpoint(endpoint string) Option {
//
// If an invalid URL is provided, the default value will be kept.
//
+// The path of the provided URL is used as-is; with one exception: if the URL has
+// no path, it is normalized to the root path ("/"). The default metrics path
+// ("/v1/metrics") is not appended automatically. Use WithEndpoint if you want
+// that behavior, or pass a URL that includes that path.
+//
// By default, if an environment variable is not set, and this option is not
// passed, "localhost:4318" will be used.
//
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/doc.go
index a2ea0492..a5e15efd 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/doc.go
@@ -84,4 +84,4 @@ The configuration can be overridden by [WithAggregationSelector] option.
[Explicit Bucket Histogram Aggregation]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.26.0/specification/metrics/sdk.md#explicit-bucket-histogram-aggregation
[Base2 Exponential Bucket Histogram Aggregation]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.26.0/specification/metrics/sdk.md#base2-exponential-bucket-histogram-aggregation
*/
-package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+package otlpmetrichttp
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go
index 292645a3..ea4e20c2 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+package otlpmetrichttp
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter/counter.go
index 267cb03d..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/envconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/envconfig/envconfig.go
index 8be035fc..87764a69 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/envconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/envconfig/envconfig.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
+
// Package envconfig provides functionality to parse configuration from
// environment variables.
-package envconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/envconfig"
+package envconfig
import (
"crypto/tls"
@@ -60,7 +60,7 @@ func WithString(n string, fn func(string)) func(e *EnvOptionsReader) {
func WithBool(n string, fn func(bool)) ConfigFn {
return func(e *EnvOptionsReader) {
if v, ok := e.GetEnvValue(n); ok {
- b := strings.ToLower(v) == "true"
+ b := strings.EqualFold(v, "true")
fn(b)
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/gen.go
index f3d165a5..9b1727ca 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/gen.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal functionally for the otlpmetrichttp package.
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal"
+package internal
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess.go.tmpl "--data={}" --out=partialsuccess.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess_test.go.tmpl "--data={}" --out=partialsuccess_test.go
@@ -31,7 +31,7 @@ package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/o
//go:generate gotmpl --body=../../../../../internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl "--data={}" --out=transform/metricdata.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/otlpmetric/transform/metricdata_test.go.tmpl "--data={}" --out=transform/metricdata_test.go
-//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
//go:generate gotmpl --body=../../../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x\" }" --out=x/x.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/count.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/count.go
index 8b5bb1fa..b046b195 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/count.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/count.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ"
+package observ
import metricpb "go.opentelemetry.io/proto/otlp/metrics/v1"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/instrumentation.go
index 5db984a2..b28b2f88 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides experimental observability instrumentation for the
// otlpmetrichttp exporter.
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/observ"
+package observ
import (
"context"
@@ -25,8 +25,8 @@ import (
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x"
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/metric"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/envconfig.go
index 69224c97..c0a6392d 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/envconfig.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/envconfig.go.tmpl
+
+package oconf
import (
"crypto/tls"
@@ -51,31 +51,37 @@ func getOptionsFromEnv() []GenericOption {
tlsConf := &tls.Config{}
DefaultEnvOptionsReader.Apply(
envconfig.WithURL("ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Metrics.Endpoint = u.Host
- // For OTLP/HTTP endpoint URLs without a per-signal
- // configuration, the passed endpoint is used as a base URL
- // and the signals are sent to these paths relative to that.
- cfg.Metrics.URLPath = path.Join(u.Path, DefaultMetricsPath)
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Metrics.Endpoint = u.Host
+ // For OTLP/HTTP endpoint URLs without a per-signal
+ // configuration, the passed endpoint is used as a base URL
+ // and the signals are sent to these paths relative to that.
+ cfg.Metrics.URLPath = path.Join(u.Path, DefaultMetricsPath)
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithURL("METRICS_ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Metrics.Endpoint = u.Host
- // For endpoint URLs for OTLP/HTTP per-signal variables, the
- // URL MUST be used as-is without any modification. The only
- // exception is that if an URL contains no path part, the root
- // path / MUST be used.
- path := u.Path
- if path == "" {
- path = "/"
- }
- cfg.Metrics.URLPath = path
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Metrics.Endpoint = u.Host
+ // For endpoint URLs for OTLP/HTTP per-signal variables, the
+ // URL MUST be used as-is without any modification. The only
+ // exception is that if an URL contains no path part, the root
+ // path / MUST be used.
+ path := u.Path
+ if path == "" {
+ path = "/"
+ }
+ cfg.Metrics.URLPath = path
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithCertPool("CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
envconfig.WithCertPool("METRICS_CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
@@ -152,7 +158,7 @@ func withInsecure(b bool) GenericOption {
}
func withTLSConfig(c *tls.Config, fn func(*tls.Config)) func(e *envconfig.EnvOptionsReader) {
- return func(e *envconfig.EnvOptionsReader) {
+ return func(*envconfig.EnvOptionsReader) {
if c.RootCAs != nil || len(c.Certificates) > 0 {
fn(c)
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go
index 3fa7cbe5..a3e4641c 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/options.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/options.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/options.go.tmpl
+
// Package oconf provides configuration for the otlpmetric exporters.
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf"
+package oconf
import (
"crypto/tls"
@@ -112,7 +112,7 @@ func NewHTTPConfig(opts ...HTTPOption) Config {
// cleanPath returns a path with all spaces trimmed. If urlPath is empty,
// defaultPath is returned instead.
-func cleanPath(urlPath string, defaultPath string) string {
+func cleanPath(urlPath, defaultPath string) string {
tmp := strings.TrimSpace(urlPath)
if tmp == "" || tmp == "." {
return defaultPath
@@ -148,7 +148,7 @@ func NewGRPCConfig(opts ...GRPCOption) Config {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithDefaultServiceConfig(cfg.ServiceConfig))
}
// Prioritize GRPCCredentials over Insecure (passing both is an error).
- if cfg.Metrics.GRPCCredentials != nil {
+ if cfg.Metrics.GRPCCredentials != nil { //nolint:gocritic // if-else is clearer than switch
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(cfg.Metrics.GRPCCredentials))
} else if cfg.Metrics.Insecure {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(insecure.NewCredentials()))
@@ -242,7 +242,7 @@ func (g *splitOption) ApplyHTTPOption(cfg Config) Config {
func (splitOption) private() {}
-func newSplitOption(httpFn func(cfg Config) Config, grpcFn func(cfg Config) Config) GenericOption {
+func newSplitOption(httpFn, grpcFn func(cfg Config) Config) GenericOption {
return &splitOption{httpFn: httpFn, grpcFn: grpcFn}
}
@@ -295,6 +295,11 @@ func WithEndpointURL(v string) GenericOption {
cfg.Metrics.Endpoint = u.Host
cfg.Metrics.URLPath = u.Path
+ if cfg.Metrics.URLPath == "" {
+ // For HTTP exporters, a URL without a path targets the root path. Set it explicitly so the default signal
+ // path is not appended by cleanPath. (URLPath is ignored by gRPC exporters.)
+ cfg.Metrics.URLPath = "/"
+ }
cfg.Metrics.Insecure = u.Scheme != "https"
return cfg
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/optiontypes.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/optiontypes.go
index d7b005c9..79f77841 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/optiontypes.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/optiontypes.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/optiontypes.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/optiontypes.go.tmpl
+
+package oconf
import "time"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/tls.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/tls.go
index e335cbd0..4ed82885 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/tls.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf/tls.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/oconf/tls.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package oconf // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/oconf/tls.go.tmpl
+
+package oconf
import (
"crypto/tls"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/partialsuccess.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/partialsuccess.go
index 04190f53..1138f2e7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/partialsuccess.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/partialsuccess.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/partialsuccess.go
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/partialsuccess.go
+
+package internal
import "fmt"
@@ -41,7 +41,7 @@ func (ps PartialSuccess) As(target any) bool {
}
// Is supports the errors.Is() interface.
-func (ps PartialSuccess) Is(err error) bool {
+func (PartialSuccess) Is(err error) bool {
_, ok := err.(PartialSuccess)
return ok
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry/retry.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry/retry.go
index b4b5c013..1883d060 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry/retry.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry/retry.go
@@ -1,13 +1,13 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/retry/retry.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/retry/retry.go.tmpl
+
// Package retry provides request retry functionality that can perform
// configurable exponential backoff for transient errors and honor any
// explicit throttle responses received.
-package retry // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry"
+package retry
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/attribute.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/attribute.go
index 6a91ff2a..9fea51b4 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/attribute.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/attribute.go
@@ -1,14 +1,15 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/attribute.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/attribute.go.tmpl
+
+package transform
import (
- "go.opentelemetry.io/otel/attribute"
cpb "go.opentelemetry.io/proto/otlp/common/v1"
+
+ "go.opentelemetry.io/otel/attribute"
)
// AttrIter transforms an attribute iterator into OTLP key-values.
@@ -91,6 +92,12 @@ func Value(v attribute.Value) *cpb.AnyValue {
Values: attrValues(v.AsSlice()),
},
}
+ case attribute.MAP:
+ av.Value = &cpb.AnyValue_KvlistValue{
+ KvlistValue: &cpb.KeyValueList{
+ Values: KeyValues(v.AsMap()),
+ },
+ }
case attribute.STRINGSLICE:
av.Value = &cpb.AnyValue_ArrayValue{
ArrayValue: &cpb.ArrayValue{
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/error.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/error.go
index f65c87cb..72850222 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/error.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/error.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/error.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/error.go.tmpl
+
+package transform
import (
"errors"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/metricdata.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/metricdata.go
index 5e5f26aa..6c07896a 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/metricdata.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform/metricdata.go
@@ -1,21 +1,22 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlpmetric/transform/metricdata.go.tmpl
+
// Package transform provides transformation functionality from the
// sdk/metric/metricdata data-types into OTLP data-types.
-package transform // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform"
+package transform
import (
"fmt"
"time"
- "go.opentelemetry.io/otel/sdk/metric/metricdata"
cpb "go.opentelemetry.io/proto/otlp/common/v1"
mpb "go.opentelemetry.io/proto/otlp/metrics/v1"
rpb "go.opentelemetry.io/proto/otlp/resource/v1"
+
+ "go.opentelemetry.io/otel/sdk/metric/metricdata"
)
// ResourceMetrics returns an OTLP ResourceMetrics generated from rm. If rm
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/version.go
index 103ac79d..fdd5f6bd 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/version.go
@@ -1,8 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal"
+package internal
// Version is the current release version of the OpenTelemetry OTLP HTTP metric
// exporter in use.
-const Version = "1.44.0"
+const Version = "1.45.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/README.md b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/README.md
index ef239cba..745170a8 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/README.md
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/README.md
@@ -24,7 +24,7 @@ When enabled, the exporter will create the following metrics using the global `M
Please see the [Semantic conventions for OpenTelemetry SDK metrics] documentation for more details on these metrics.
-[Semantic conventions for OpenTelemetry SDK metrics]: https://github.com/open-telemetry/semantic-conventions/blob/v1.41.0/docs/otel/sdk-metrics.md
+[Semantic conventions for OpenTelemetry SDK metrics]: https://github.com/open-telemetry/semantic-conventions/blob/v1.43.0/docs/otel/sdk-metrics.md
## Compatibility and Stability
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/observ.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/observ.go
index 296946a3..76b6fdeb 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/observ.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/observ.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/x.go
index 663375f6..87c19a26 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x].
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/version.go
index da551839..273e5e79 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/version.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpmetrichttp // import "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+package otlpmetrichttp
// Version is the current release version of the OpenTelemetry OTLP over HTTP/protobuf metrics exporter in use.
func Version() string {
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go
index 3c1a625c..d97fada2 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/clients.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptrace // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+package otlptrace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go
index 09ad5ead..5fd4bf5b 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/doc.go
@@ -7,4 +7,4 @@ See the official OTLP span exporter implementations:
- [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc],
- [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp].
*/
-package otlptrace // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+package otlptrace
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go
index 30446bd2..037d485d 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptrace // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+package otlptrace
import (
"context"
@@ -97,9 +97,9 @@ func NewUnstarted(client Client) *Exporter {
func (e *Exporter) MarshalLog() any {
return struct {
Type string
- Client Client
+ Client string
}{
Type: "otlptrace",
- Client: e.client,
+ Client: fmt.Sprintf("%T", e.client),
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.go
index 0d43a5dc..86a34d3b 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/attribute.go
@@ -3,7 +3,7 @@
// Package tracetransform provides conversion functionality for the otlptrace
// exporters.
-package tracetransform // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform"
+package tracetransform
import (
commonpb "go.opentelemetry.io/proto/otlp/common/v1"
@@ -97,6 +97,12 @@ func Value(v attribute.Value) *commonpb.AnyValue {
Values: values(v.AsSlice()),
},
}
+ case attribute.MAP:
+ av.Value = &commonpb.AnyValue_KvlistValue{
+ KvlistValue: &commonpb.KeyValueList{
+ Values: KeyValues(v.AsMap()),
+ },
+ }
case attribute.STRINGSLICE:
av.Value = &commonpb.AnyValue_ArrayValue{
ArrayValue: &commonpb.ArrayValue{
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go
index 43359c89..078a9db0 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/instrumentation.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package tracetransform // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform"
+package tracetransform
import (
commonpb "go.opentelemetry.io/proto/otlp/common/v1"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go
index 526bb5e0..14e5bdc5 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/resource.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package tracetransform // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform"
+package tracetransform
import (
resourcepb "go.opentelemetry.io/proto/otlp/resource/v1"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.go
index d431fc45..3ab14b54 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform/span.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package tracetransform // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform"
+package tracetransform
import (
"math"
@@ -37,21 +37,22 @@ func Spans(sdl []tracesdk.ReadOnlySpan) []*tracepb.ResourceSpans {
}
rKey := sd.Resource().Equivalent()
+ scope := sd.InstrumentationScope()
k := key{
r: rKey,
- is: sd.InstrumentationScope(),
+ is: scope,
}
scopeSpan, iOk := ssm[k]
if !iOk {
// Either the resource or instrumentation scope were unknown.
scopeSpan = &tracepb.ScopeSpans{
- Scope: InstrumentationScope(sd.InstrumentationScope()),
+ Scope: InstrumentationScope(scope),
Spans: []*tracepb.Span{},
- SchemaUrl: sd.InstrumentationScope().SchemaURL,
+ SchemaUrl: scope.SchemaURL,
}
+ ssm[k] = scopeSpan
}
scopeSpan.Spans = append(scopeSpan.Spans, span(sd))
- ssm[k] = scopeSpan
rs, rOk := rsm[rKey]
if !rOk {
@@ -90,14 +91,16 @@ func span(sd tracesdk.ReadOnlySpan) *tracepb.Span {
return nil
}
- tid := sd.SpanContext().TraceID()
- sid := sd.SpanContext().SpanID()
+ spanContext := sd.SpanContext()
+ tid := spanContext.TraceID()
+ sid := spanContext.SpanID()
+ sdStatus := sd.Status()
s := &tracepb.Span{
TraceId: tid[:],
SpanId: sid[:],
- TraceState: sd.SpanContext().TraceState().String(),
- Status: status(sd.Status().Code, sd.Status().Description),
+ TraceState: spanContext.TraceState().String(),
+ Status: status(sdStatus.Code, sdStatus.Description),
StartTimeUnixNano: uint64(max(0, sd.StartTime().UnixNano())), // nolint:gosec // Overflow checked.
EndTimeUnixNano: uint64(max(0, sd.EndTime().UnixNano())), // nolint:gosec // Overflow checked.
Links: links(sd.Links()),
@@ -110,10 +113,11 @@ func span(sd tracesdk.ReadOnlySpan) *tracepb.Span {
DroppedLinksCount: clampUint32(sd.DroppedLinks()),
}
- if psid := sd.Parent().SpanID(); psid.IsValid() {
+ sdParent := sd.Parent()
+ if psid := sdParent.SpanID(); psid.IsValid() {
s.ParentSpanId = psid[:]
}
- s.Flags = buildSpanFlagsWith(sd.SpanContext().TraceFlags(), sd.Parent())
+ s.Flags = buildSpanFlagsWith(spanContext.TraceFlags(), sdParent)
return s
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/client.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/client.go
index e8b33d3f..494bece4 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/client.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/client.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracegrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+package otlptracegrpc
import (
"context"
@@ -328,12 +328,10 @@ func throttleDelay(s *status.Status) (bool, time.Duration) {
}
// MarshalLog is the marshaling function used by the logging system to represent this Client.
-func (c *client) MarshalLog() any {
+func (*client) MarshalLog() any {
return struct {
- Type string
- Endpoint string
+ Type string
}{
- Type: "otlptracegrpc",
- Endpoint: c.endpoint,
+ Type: "otlptracegrpc",
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/doc.go
index b7bd429f..b01358fc 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/doc.go
@@ -62,4 +62,4 @@ The configuration can be overridden by [WithTLSCredentials], [WithGRPCConn] opti
[W3C Baggage HTTP Header Content Format]: https://www.w3.org/TR/baggage/#header-content
*/
-package otlptracegrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+package otlptracegrpc
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporter.go
index b826b842..d75b1844 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracegrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+package otlptracegrpc
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter/counter.go
index 323b2a2c..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig/envconfig.go
index 6eacdf31..87764a69 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig/envconfig.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
+
// Package envconfig provides functionality to parse configuration from
// environment variables.
-package envconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig"
+package envconfig
import (
"crypto/tls"
@@ -60,7 +60,7 @@ func WithString(n string, fn func(string)) func(e *EnvOptionsReader) {
func WithBool(n string, fn func(bool)) ConfigFn {
return func(e *EnvOptionsReader) {
if v, ok := e.GetEnvValue(n); ok {
- b := strings.ToLower(v) == "true"
+ b := strings.EqualFold(v, "true")
fn(b)
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/gen.go
index 7fe9c9f3..ec16d014 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/gen.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal functionally for the otlptracegrpc package.
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal"
+package internal
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess.go.tmpl "--data={}" --out=partialsuccess.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess_test.go.tmpl "--data={}" --out=partialsuccess_test.go
@@ -27,8 +27,8 @@ package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/ot
//go:generate gotmpl --body=../../../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc\" }" --out=x/x.go
//go:generate gotmpl --body=../../../../../internal/shared/x/x_test.go.tmpl "--data={}" --out=x/x_test.go
-//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target.go.tmpl "--data={ \"pkg\": \"observ\", \"pkg_path\": \"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ\" }" --out=observ/target.go
+//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target.go.tmpl "--data={ \"pkg\": \"observ\" }" --out=observ/target.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/observ/target_test.go.tmpl "--data={ \"pkg\": \"observ\" }" --out=observ/target_test.go
-//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/doc.go
index 0dd54e4b..32188bf7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/doc.go
@@ -3,4 +3,4 @@
// Package observ provides experimental observability instrumentation for the
// otlptracegrpc exporter.
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ"
+package observ
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/instrumentation.go
index 676a9351..d6730bc1 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/instrumentation.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ"
+package observ
import (
"context"
@@ -18,8 +18,8 @@ import (
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x"
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/metric"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/target.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/target.go
index 34eee27d..4d066589 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/target.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ/target.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/observ/target.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/observ/target.go.tmpl
+
+package observ
import (
"errors"
@@ -41,11 +41,10 @@ func ParseCanonicalTarget(target string) (string, int, error) {
const sep = "://"
// Find scheme. Do not allocate the string by using url.Parse.
- idx := strings.Index(target, sep)
- if idx == -1 {
+ scheme, endpoint, found := strings.Cut(target, sep)
+ if !found {
return "", -1, fmt.Errorf("invalid target %q: missing scheme", target)
}
- scheme, endpoint := target[:idx], target[idx+len(sep):]
// Check for unix schemes.
if scheme == schemeUnix || scheme == schemeUnixAbstract {
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/envconfig.go
index 1d840be2..8b3f729f 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/envconfig.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/envconfig.go.tmpl
+
+package otlpconfig
import (
"crypto/tls"
@@ -49,31 +49,37 @@ func getOptionsFromEnv() []GenericOption {
tlsConf := &tls.Config{}
DefaultEnvOptionsReader.Apply(
envconfig.WithURL("ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Traces.Endpoint = u.Host
- // For OTLP/HTTP endpoint URLs without a per-signal
- // configuration, the passed endpoint is used as a base URL
- // and the signals are sent to these paths relative to that.
- cfg.Traces.URLPath = path.Join(u.Path, DefaultTracesPath)
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Traces.Endpoint = u.Host
+ // For OTLP/HTTP endpoint URLs without a per-signal
+ // configuration, the passed endpoint is used as a base URL
+ // and the signals are sent to these paths relative to that.
+ cfg.Traces.URLPath = path.Join(u.Path, DefaultTracesPath)
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithURL("TRACES_ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Traces.Endpoint = u.Host
- // For endpoint URLs for OTLP/HTTP per-signal variables, the
- // URL MUST be used as-is without any modification. The only
- // exception is that if an URL contains no path part, the root
- // path / MUST be used.
- path := u.Path
- if path == "" {
- path = "/"
- }
- cfg.Traces.URLPath = path
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Traces.Endpoint = u.Host
+ // For endpoint URLs for OTLP/HTTP per-signal variables, the
+ // URL MUST be used as-is without any modification. The only
+ // exception is that if an URL contains no path part, the root
+ // path / MUST be used.
+ path := u.Path
+ if path == "" {
+ path = "/"
+ }
+ cfg.Traces.URLPath = path
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithCertPool("CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
envconfig.WithCertPool("TRACES_CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
@@ -142,7 +148,7 @@ func withInsecure(b bool) GenericOption {
}
func withTLSConfig(c *tls.Config, fn func(*tls.Config)) func(e *envconfig.EnvOptionsReader) {
- return func(e *envconfig.EnvOptionsReader) {
+ return func(*envconfig.EnvOptionsReader) {
if c.RootCAs != nil || len(c.Certificates) > 0 {
fn(c)
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go
index d940b676..36cf1e26 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/options.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/options.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/options.go.tmpl
+
// Package otlpconfig provides configuration for the otlptrace exporters.
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig"
+package otlpconfig
import (
"crypto/tls"
@@ -99,7 +99,7 @@ func NewHTTPConfig(opts ...HTTPOption) Config {
// cleanPath returns a path with all spaces trimmed. If urlPath is empty,
// defaultPath is returned instead.
-func cleanPath(urlPath string, defaultPath string) string {
+func cleanPath(urlPath, defaultPath string) string {
tmp := strings.TrimSpace(urlPath)
if tmp == "" || tmp == "." {
return defaultPath
@@ -134,7 +134,7 @@ func NewGRPCConfig(opts ...GRPCOption) Config {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithDefaultServiceConfig(cfg.ServiceConfig))
}
// Prioritize GRPCCredentials over Insecure (passing both is an error).
- if cfg.Traces.GRPCCredentials != nil {
+ if cfg.Traces.GRPCCredentials != nil { //nolint:gocritic // if-else is clearer than switch
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(cfg.Traces.GRPCCredentials))
} else if cfg.Traces.Insecure {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(insecure.NewCredentials()))
@@ -228,7 +228,7 @@ func (g *splitOption) ApplyHTTPOption(cfg Config) Config {
func (splitOption) private() {}
-func newSplitOption(httpFn func(cfg Config) Config, grpcFn func(cfg Config) Config) GenericOption {
+func newSplitOption(httpFn, grpcFn func(cfg Config) Config) GenericOption {
return &splitOption{httpFn: httpFn, grpcFn: grpcFn}
}
@@ -286,6 +286,11 @@ func WithEndpointURL(v string) GenericOption {
cfg.Traces.Endpoint = u.Host
cfg.Traces.URLPath = u.Path
+ if cfg.Traces.URLPath == "" {
+ // For HTTP exporters, a URL without a path targets the root path. Set it explicitly so the default signal
+ // path is not appended by cleanPath. (URLPath is ignored by gRPC exporters.)
+ cfg.Traces.URLPath = "/"
+ }
cfg.Traces.Insecure = u.Scheme != "https"
return cfg
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/optiontypes.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/optiontypes.go
index 91849038..213c3605 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/optiontypes.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/optiontypes.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/optiontypes.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/optiontypes.go.tmpl
+
+package otlpconfig
const (
// DefaultCollectorGRPCPort is the default gRPC port of the collector.
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/tls.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/tls.go
index ba6e4118..a14d5e6e 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/tls.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig/tls.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/tls.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/tls.go.tmpl
+
+package otlpconfig
import (
"crypto/tls"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/partialsuccess.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/partialsuccess.go
index a811a07b..1138f2e7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/partialsuccess.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/partialsuccess.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/partialsuccess.go
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/partialsuccess.go
+
+package internal
import "fmt"
@@ -41,7 +41,7 @@ func (ps PartialSuccess) As(target any) bool {
}
// Is supports the errors.Is() interface.
-func (ps PartialSuccess) Is(err error) bool {
+func (PartialSuccess) Is(err error) bool {
_, ok := err.(PartialSuccess)
return ok
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry/retry.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry/retry.go
index a7b8e81a..1883d060 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry/retry.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry/retry.go
@@ -1,13 +1,13 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/retry/retry.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/retry/retry.go.tmpl
+
// Package retry provides request retry functionality that can perform
// configurable exponential backoff for transient errors and honor any
// explicit throttle responses received.
-package retry // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry"
+package retry
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/version.go
index 28e51e44..942d37af 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/version.go
@@ -1,8 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal"
+package internal
// Version is the current release version of the OpenTelemetry OTLP gRPC trace
// exporter in use.
-const Version = "1.44.0"
+const Version = "1.45.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/observ.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/observ.go
index 4e89c652..76b6fdeb 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/observ.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/observ.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/x.go
index 741ba62c..69ce31ee 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc].
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/options.go
index b3200605..ea20363c 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/options.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracegrpc // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+package otlptracegrpc
import (
"fmt"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go
index f81098b3..5b122f3c 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/client.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracehttp // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
+package otlptracehttp
import (
"bytes"
@@ -334,15 +334,11 @@ func (c *client) newRequest(body []byte) (request, error) {
}
// MarshalLog is the marshaling function used by the logging system to represent this Client.
-func (c *client) MarshalLog() any {
+func (*client) MarshalLog() any {
return struct {
- Type string
- Endpoint string
- Insecure bool
+ Type string
}{
- Type: "otlptracehttp",
- Endpoint: c.cfg.Endpoint,
- Insecure: c.cfg.Insecure,
+ Type: "otlptracehttp",
}
}
@@ -376,7 +372,7 @@ func (r *request) reset(ctx context.Context) {
// retryableError represents a request failure that can be retried.
type retryableError struct {
- throttle int64
+ throttle time.Duration
err error
}
@@ -385,16 +381,30 @@ type retryableError struct {
// if it is not nil.
func newResponseError(header http.Header, wrapped error) error {
var rErr retryableError
- if s, ok := header["Retry-After"]; ok {
- if t, err := strconv.ParseInt(s[0], 10, 64); err == nil {
- rErr.throttle = t
- }
+ if v := header.Get("Retry-After"); v != "" {
+ rErr.throttle = retryAfterDuration(v)
}
rErr.err = wrapped
return rErr
}
+func retryAfterDuration(v string) time.Duration {
+ if t, err := strconv.ParseInt(v, 10, 64); err == nil && t >= 0 {
+ const maxRetryAfterSeconds = int64(1<<63-1) / int64(time.Second)
+ if t > maxRetryAfterSeconds {
+ return time.Duration(1<<63 - 1)
+ }
+ return time.Duration(t) * time.Second
+ }
+
+ if date, err := http.ParseTime(v); err == nil {
+ return max(time.Until(date), 0)
+ }
+
+ return 0
+}
+
func (e retryableError) Error() string {
if e.err != nil {
return "retry-able request failure: " + e.err.Error()
@@ -436,7 +446,7 @@ func evaluate(err error) (bool, time.Duration) {
return false, 0
}
- return true, time.Duration(rErr.throttle)
+ return true, rErr.throttle
}
func (c *client) getScheme() string {
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go
index 85645e11..2064db57 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/doc.go
@@ -65,4 +65,4 @@ The configuration can be overridden by [WithTLSClientConfig] option.
[W3C Baggage HTTP Header Content Format]: https://www.w3.org/TR/baggage/#header-content
*/
-package otlptracehttp // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
+package otlptracehttp
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go
index fae89ea4..b6e1214c 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracehttp // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
+package otlptracehttp
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go
index 75e5c0c7..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go
index f4385fb4..87764a69 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig/envconfig.go
@@ -1,12 +1,12 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/envconfig/envconfig.go.tmpl
+
// Package envconfig provides functionality to parse configuration from
// environment variables.
-package envconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/envconfig"
+package envconfig
import (
"crypto/tls"
@@ -60,7 +60,7 @@ func WithString(n string, fn func(string)) func(e *EnvOptionsReader) {
func WithBool(n string, fn func(bool)) ConfigFn {
return func(e *EnvOptionsReader) {
if v, ok := e.GetEnvValue(n); ok {
- b := strings.ToLower(v) == "true"
+ b := strings.EqualFold(v, "true")
fn(b)
}
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go
index ca387432..9064f656 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/gen.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal functionally for the otlptracehttp package.
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal"
+package internal
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess.go.tmpl "--data={}" --out=partialsuccess.go
//go:generate gotmpl --body=../../../../../internal/shared/otlp/partialsuccess_test.go.tmpl "--data={}" --out=partialsuccess_test.go
@@ -26,6 +26,6 @@ package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/ot
//go:generate gotmpl --body=../../../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp\" }" --out=x/x.go
-//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
//go:generate gotmpl --body=../../../../../internal/shared/x/x_test.go.tmpl "--data={}" --out=x/x_test.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go
index 1f4fc55c..14ef0bbd 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides experimental observability instrumentation for the
// otlptracehttp exporter.
-package observ // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ"
+package observ
import (
"context"
@@ -23,8 +23,8 @@ import (
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x"
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/metric"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.go
index 121b02f5..f630d66b 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/envconfig.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/envconfig.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/envconfig.go.tmpl
+
+package otlpconfig
import (
"crypto/tls"
@@ -49,31 +49,37 @@ func getOptionsFromEnv() []GenericOption {
tlsConf := &tls.Config{}
DefaultEnvOptionsReader.Apply(
envconfig.WithURL("ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Traces.Endpoint = u.Host
- // For OTLP/HTTP endpoint URLs without a per-signal
- // configuration, the passed endpoint is used as a base URL
- // and the signals are sent to these paths relative to that.
- cfg.Traces.URLPath = path.Join(u.Path, DefaultTracesPath)
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Traces.Endpoint = u.Host
+ // For OTLP/HTTP endpoint URLs without a per-signal
+ // configuration, the passed endpoint is used as a base URL
+ // and the signals are sent to these paths relative to that.
+ cfg.Traces.URLPath = path.Join(u.Path, DefaultTracesPath)
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithURL("TRACES_ENDPOINT", func(u *url.URL) {
- opts = append(opts, withEndpointScheme(u))
- opts = append(opts, newSplitOption(func(cfg Config) Config {
- cfg.Traces.Endpoint = u.Host
- // For endpoint URLs for OTLP/HTTP per-signal variables, the
- // URL MUST be used as-is without any modification. The only
- // exception is that if an URL contains no path part, the root
- // path / MUST be used.
- path := u.Path
- if path == "" {
- path = "/"
- }
- cfg.Traces.URLPath = path
- return cfg
- }, withEndpointForGRPC(u)))
+ opts = append(
+ opts,
+ withEndpointScheme(u),
+ newSplitOption(func(cfg Config) Config {
+ cfg.Traces.Endpoint = u.Host
+ // For endpoint URLs for OTLP/HTTP per-signal variables, the
+ // URL MUST be used as-is without any modification. The only
+ // exception is that if an URL contains no path part, the root
+ // path / MUST be used.
+ path := u.Path
+ if path == "" {
+ path = "/"
+ }
+ cfg.Traces.URLPath = path
+ return cfg
+ }, withEndpointForGRPC(u)),
+ )
}),
envconfig.WithCertPool("CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
envconfig.WithCertPool("TRACES_CERTIFICATE", func(p *x509.CertPool) { tlsConf.RootCAs = p }),
@@ -142,7 +148,7 @@ func withInsecure(b bool) GenericOption {
}
func withTLSConfig(c *tls.Config, fn func(*tls.Config)) func(e *envconfig.EnvOptionsReader) {
- return func(e *envconfig.EnvOptionsReader) {
+ return func(*envconfig.EnvOptionsReader) {
if c.RootCAs != nil || len(c.Certificates) > 0 {
fn(c)
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go
index 2abde661..eccabc0c 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/options.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/options.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/options.go.tmpl
+
// Package otlpconfig provides configuration for the otlptrace exporters.
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig"
+package otlpconfig
import (
"crypto/tls"
@@ -99,7 +99,7 @@ func NewHTTPConfig(opts ...HTTPOption) Config {
// cleanPath returns a path with all spaces trimmed. If urlPath is empty,
// defaultPath is returned instead.
-func cleanPath(urlPath string, defaultPath string) string {
+func cleanPath(urlPath, defaultPath string) string {
tmp := strings.TrimSpace(urlPath)
if tmp == "" || tmp == "." {
return defaultPath
@@ -134,7 +134,7 @@ func NewGRPCConfig(opts ...GRPCOption) Config {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithDefaultServiceConfig(cfg.ServiceConfig))
}
// Prioritize GRPCCredentials over Insecure (passing both is an error).
- if cfg.Traces.GRPCCredentials != nil {
+ if cfg.Traces.GRPCCredentials != nil { //nolint:gocritic // if-else is clearer than switch
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(cfg.Traces.GRPCCredentials))
} else if cfg.Traces.Insecure {
cfg.DialOptions = append(cfg.DialOptions, grpc.WithTransportCredentials(insecure.NewCredentials()))
@@ -228,7 +228,7 @@ func (g *splitOption) ApplyHTTPOption(cfg Config) Config {
func (splitOption) private() {}
-func newSplitOption(httpFn func(cfg Config) Config, grpcFn func(cfg Config) Config) GenericOption {
+func newSplitOption(httpFn, grpcFn func(cfg Config) Config) GenericOption {
return &splitOption{httpFn: httpFn, grpcFn: grpcFn}
}
@@ -286,6 +286,11 @@ func WithEndpointURL(v string) GenericOption {
cfg.Traces.Endpoint = u.Host
cfg.Traces.URLPath = u.Path
+ if cfg.Traces.URLPath == "" {
+ // For HTTP exporters, a URL without a path targets the root path. Set it explicitly so the default signal
+ // path is not appended by cleanPath. (URLPath is ignored by gRPC exporters.)
+ cfg.Traces.URLPath = "/"
+ }
cfg.Traces.Insecure = u.Scheme != "https"
return cfg
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go
index 6a52b58c..213c3605 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/optiontypes.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/optiontypes.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/optiontypes.go.tmpl
+
+package otlpconfig
const (
// DefaultCollectorGRPCPort is the default gRPC port of the collector.
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.go
index 5b389cb0..a14d5e6e 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig/tls.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/otlptrace/otlpconfig/tls.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/otlptrace/otlpconfig/tls.go.tmpl
+
+package otlpconfig
import (
"crypto/tls"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go
index 33ff6c02..1138f2e7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/partialsuccess.go
@@ -1,10 +1,10 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/partialsuccess.go
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/partialsuccess.go
+
+package internal
import "fmt"
@@ -41,7 +41,7 @@ func (ps PartialSuccess) As(target any) bool {
}
// Is supports the errors.Is() interface.
-func (ps PartialSuccess) Is(err error) bool {
+func (PartialSuccess) Is(err error) bool {
_, ok := err.(PartialSuccess)
return ok
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go
index bf398082..1883d060 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry/retry.go
@@ -1,13 +1,13 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/otlp/retry/retry.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/otlp/retry/retry.go.tmpl
+
// Package retry provides request retry functionality that can perform
// configurable exponential backoff for transient errors and honor any
// explicit throttle responses received.
-package retry // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry"
+package retry
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go
index 882b6713..6e753209 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/version.go
@@ -1,8 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal"
+package internal
// Version is the current release version of the OpenTelemetry OTLP HTTP trace
// exporter in use.
-const Version = "1.44.0"
+const Version = "1.45.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.go
index ecae4a79..76b6fdeb 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/observ.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go
index 099dab00..9e7537b9 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp].
-package x // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go
index 291b5f9b..ad6a2d74 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/options.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptracehttp // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
+package otlptracehttp
import (
"crypto/tls"
@@ -93,6 +93,11 @@ func WithEndpoint(endpoint string) Option {
//
// If an invalid URL is provided, the default value will be kept.
//
+// The path of the provided URL is used as-is; with one exception: if the URL has
+// no path, it is normalized to the root path ("/"). The default traces path
+// ("/v1/traces") is not appended automatically. Use WithEndpoint if you want
+// that behavior, or pass a URL that includes that path.
+//
// By default, if an environment variable is not set, and this option is not
// passed, "localhost:4318" will be used.
//
diff --git a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go
index d847210d..da70f3f5 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/version.go
@@ -1,9 +1,9 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package otlptrace // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+package otlptrace
// Version is the current release version of the OpenTelemetry OTLP trace exporter in use.
func Version() string {
- return "1.44.0"
+ return "1.45.0"
}
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/config.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/config.go
index 5fe28b93..f23fd928 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/config.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus"
+package prometheus
import (
"github.com/prometheus/client_golang/prometheus"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/doc.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/doc.go
index 2f49f375..3f885153 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/doc.go
@@ -8,4 +8,4 @@
// The Prometheus exporter ignores metrics from the Prometheus bridge. To
// export these metrics, simply register them directly with the Prometheus
// Handler.
-package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus"
+package prometheus
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/errors.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/errors.go
index 7206acab..445c9cb1 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/errors.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/errors.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus"
+package prometheus
import "errors"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/exporter.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/exporter.go
index bc010389..38af8cd7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package prometheus // import "go.opentelemetry.io/otel/exporters/prometheus"
+package prometheus
import (
"context"
@@ -251,8 +251,11 @@ func (c *collector) Collect(ch chan<- prometheus.Metric) {
})
continue
}
- // resource attributes + scope attributes + scope name + scope version + scope schema url
- n := len(c.resourceKeyVals.keys) + 3 + scopeMetrics.Scope.Attributes.Len()
+ // resource attributes + (if enabled) scope fields
+ n := len(c.resourceKeyVals.keys)
+ if !c.disableScopeInfo {
+ n += 3 + scopeMetrics.Scope.Attributes.Len()
+ }
kv := keyVals{
keys: make([]string, 0, n),
vals: make([]string, 0, n),
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/counter/counter.go
index 87808d54..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/prometheus/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/gen.go
index add058a2..66d8b442 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/gen.go
@@ -3,9 +3,9 @@
// Package internal provides internal functionality for the prometheus
// package.
-package internal // import "go.opentelemetry.io/otel/exporters/prometheus/internal"
+package internal
-//go:generate gotmpl --body=../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/prometheus/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
//go:generate gotmpl --body=../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/prometheus\" }" --out=x/x.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/observ/instrumentation.go
index c995b982..101c8db2 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides experimental observability instrumentation
// for the prometheus exporter.
-package observ // import "go.opentelemetry.io/otel/exporters/prometheus/internal/observ"
+package observ
import (
"context"
@@ -17,8 +17,8 @@ import (
"go.opentelemetry.io/otel/exporters/prometheus/internal"
"go.opentelemetry.io/otel/exporters/prometheus/internal/x"
"go.opentelemetry.io/otel/metric"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/version.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/version.go
index 5616fe25..cf8a159f 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/version.go
@@ -2,8 +2,8 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal utilities for the OpenTelemetry prometheus exporter.
-package internal // import "go.opentelemetry.io/otel/exporters/prometheus/internal"
+package internal
// Version is the current release version of the OpenTelemetry prometheus
// exporter in use.
-const Version = "0.66.0"
+const Version = "0.67.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/features.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/features.go
index fc9aeb08..76b6fdeb 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/features.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/features.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package x // import "go.opentelemetry.io/otel/exporters/prometheus/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/x.go
index 60d0baa7..476327e7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/prometheus/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/prometheus].
-package x // import "go.opentelemetry.io/otel/exporters/prometheus/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
index 0ba3424e..4abadf76 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package stdouttrace // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
+package stdouttrace
import (
"io"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/doc.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/doc.go
index 648bc074..9e2f2a43 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/doc.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/doc.go
@@ -6,4 +6,4 @@
//
// See [go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x] for information about
// the experimental features.
-package stdouttrace // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
+package stdouttrace
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter/counter.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter/counter.go
index 8c780afb..57c6acb7 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter/counter.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter/counter.go
@@ -1,14 +1,14 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/counter/counter.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/counter/counter.go.tmpl
+
// Package counter provides a simple counter for generating unique IDs.
//
// This package is used to generate unique IDs while allowing testing packages
// to reset the counter.
-package counter // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter"
+package counter
import "sync/atomic"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/gen.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/gen.go
index 6d14e32d..05754b61 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/gen.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/gen.go
@@ -3,9 +3,9 @@
// Package internal provides internal functionality for the stdouttrace
// package.
-package internal // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal"
+package internal
-//go:generate gotmpl --body=../../../../internal/shared/counter/counter.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/counter\" }" --out=counter/counter.go
+//go:generate gotmpl --body=../../../../internal/shared/counter/counter.go.tmpl "--data={}" --out=counter/counter.go
//go:generate gotmpl --body=../../../../internal/shared/counter/counter_test.go.tmpl "--data={}" --out=counter/counter_test.go
//go:generate gotmpl --body=../../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/exporters/stdout/stdouttrace\" }" --out=x/x.go
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/observ/instrumentation.go
index 08e27678..21795280 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides experimental observability instrumentation
// for the stdout trace exporter.
-package observ // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/observ"
+package observ
import (
"context"
@@ -17,8 +17,8 @@ import (
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal"
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x"
"go.opentelemetry.io/otel/metric"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
@@ -205,7 +205,7 @@ func (e ExportOp) End(success int64, err error) {
}
mOpt := e.inst.setOpt
- if err != nil && exportedSpansEnable {
+ if err != nil && (exportedSpansEnable || opDurationEnable) {
attrs := get[attribute.KeyValue](measureAttrsPool)
defer put(measureAttrsPool, attrs)
*attrs = append(*attrs, e.inst.attrs...)
@@ -216,10 +216,11 @@ func (e ExportOp) End(success int64, err error) {
set := attribute.NewSet(*attrs...)
mOpt = metric.WithAttributeSet(set)
- // Reset addOpt with new attribute set.
- *addOpt = append((*addOpt)[:0], mOpt)
-
- e.inst.exportedSpans.Add(e.ctx, e.nSpans-success, *addOpt...)
+ if exportedSpansEnable {
+ // Reset addOpt with new attribute set.
+ *addOpt = append((*addOpt)[:0], mOpt)
+ e.inst.exportedSpans.Add(e.ctx, e.nSpans-success, *addOpt...)
+ }
}
if opDurationEnable {
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/version.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/version.go
index c22b38fd..ea80d309 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/version.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/version.go
@@ -1,8 +1,8 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package internal // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal"
+package internal
// Version is the current release version of the OpenTelemetry stdouttrace
// exporter in use.
-const Version = "1.44.0"
+const Version = "1.45.0"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/features.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/features.go
index 5c638d3b..4c9894f0 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/features.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/features.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/stdout/stdouttrace].
-package x // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/x.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/x.go
index 61424289..be10386b 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/exporters/stdout/stdouttrace].
-package x // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/trace.go b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/trace.go
index 822ed5d7..d123b208 100644
--- a/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/trace.go
+++ b/vendor/go.opentelemetry.io/otel/exporters/stdout/stdouttrace/trace.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package stdouttrace // import "go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
+package stdouttrace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
index a4faa6a0..39b34eab 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
@@ -10,4 +10,4 @@
// and
// https://github.com/open-telemetry/oteps/blob/d226b677d73a785523fe9b9701be13225ebc528d/text/0201-scope-attributes.md
// for more information.
-package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
+package instrumentation
diff --git a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
index f2cdf3c6..8baf8dbb 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
+package instrumentation
// Library represents the instrumentation library.
//
diff --git a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
index 34852a47..1fd06db7 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
+package instrumentation
import "go.opentelemetry.io/otel/attribute"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/dedup.go b/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/dedup.go
new file mode 100644
index 00000000..fe9ddc96
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/dedup.go
@@ -0,0 +1,300 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/attrnorm/dedup.go.tmpl
+
+// Package attrnorm normalizes attribute values.
+package attrnorm
+
+import (
+ "reflect"
+ "unsafe"
+
+ "go.opentelemetry.io/otel/attribute"
+)
+
+var (
+ keyValueType = reflect.TypeFor[attribute.KeyValue]()
+ valueType = reflect.TypeFor[attribute.Value]()
+)
+
+// rawValue mirrors attribute.Value. It is used only to read immutable slice
+// storage without calling AsMap or AsSlice on no-op paths.
+type rawValue struct {
+ vtype attribute.Type
+ numeric uint64
+ stringly string
+ slice any
+}
+
+// Value returns value with all map values deduplicated and whether it changed.
+//
+// Duplicate map keys are resolved using last-value-wins semantics.
+func Value(value attribute.Value) (attribute.Value, bool) {
+ switch value.Type() {
+ case attribute.SLICE:
+ return deduplicateSliceValue(value)
+ case attribute.MAP:
+ return deduplicateMapValue(value)
+ default:
+ return value, false
+ }
+}
+
+// KeyValue returns kv with all map values deduplicated and whether it changed.
+func KeyValue(kv attribute.KeyValue) (attribute.KeyValue, bool) {
+ value, changed := Value(kv.Value)
+ if changed {
+ kv.Value = value
+ }
+ return kv, changed
+}
+
+// KeyValues returns kvs with all map values deduplicated and whether they changed.
+//
+// The returned slice is the original kvs slice if no value needs
+// deduplication. Top-level keys in kvs are not deduplicated.
+func KeyValues(kvs []attribute.KeyValue) ([]attribute.KeyValue, bool) {
+ // Preserve the caller's slice on the common no-op path. Once a changed
+ // value is found, copy the prior values exactly once and fill the rest in
+ // place as the scan continues.
+ var normalized []attribute.KeyValue
+ for i, kv := range kvs {
+ kv, changed := KeyValue(kv)
+ if normalized != nil {
+ normalized[i] = kv
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.KeyValue, len(kvs))
+ copy(normalized, kvs[:i])
+ normalized[i] = kv
+ }
+ if normalized == nil {
+ return kvs, false
+ }
+ return normalized, true
+}
+
+// Set returns set with all map values deduplicated and whether it changed.
+//
+// The returned Set is the original set if no value needs deduplication.
+// Top-level key uniqueness remains attribute.Set's responsibility; this only
+// normalizes map attribute values.
+func Set(set attribute.Set) (attribute.Set, bool) {
+ if set.Len() == 0 {
+ return set, false
+ }
+
+ // Most attribute sets contain no duplicate map keys. Delay allocation until
+ // the first changed value so the no-op path returns the original Set.
+ var normalized []attribute.KeyValue
+ for i := range set.Len() {
+ kv, _ := set.Get(i)
+ kv, changed := KeyValue(kv)
+ if normalized != nil {
+ normalized = append(normalized, kv)
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.KeyValue, 0, set.Len())
+ for j := range i {
+ prior, _ := set.Get(j)
+ normalized = append(normalized, prior)
+ }
+ normalized = append(normalized, kv)
+ }
+ if normalized == nil {
+ return set, false
+ }
+
+ return attribute.NewSet(normalized...), true
+}
+
+func deduplicateSliceValue(value attribute.Value) (attribute.Value, bool) {
+ storage := valueStorage(value)
+ length := valueLen(storage)
+
+ // Slice values can contain map values, so recurse into each element while
+ // keeping the original attribute.Value when no element changes.
+ var normalized []attribute.Value
+ for i := range length {
+ elem := valueAt(storage, i)
+ elem, changed := Value(elem)
+ if normalized != nil {
+ normalized[i] = elem
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.Value, length)
+ for j := range i {
+ normalized[j] = valueAt(storage, j)
+ }
+ normalized[i] = elem
+ }
+ if normalized == nil {
+ return value, false
+ }
+ return attribute.SliceValue(normalized...), true
+}
+
+func deduplicateMapValue(value attribute.Value) (attribute.Value, bool) {
+ storage := valueStorage(value)
+ length := keyValueLen(storage)
+ if length <= 1 {
+ // A single map entry cannot duplicate its own key, but its value might
+ // contain a map or slice that needs recursive normalization.
+ if length == 1 {
+ kv, changed := KeyValue(keyValueAt(storage, 0))
+ if changed {
+ return attribute.MapValue(kv), true
+ }
+ }
+ return value, false
+ }
+
+ var normalized []attribute.KeyValue
+ for i := 0; i < length; {
+ // attribute.MapValue stores key-values sorted by key using a stable
+ // sort. Equal keys therefore form a contiguous run, and the last
+ // element in that run is the last value provided by the caller.
+ first := keyValueAt(storage, i)
+ j := i + 1
+ for j < length && keyValueAt(storage, j).Key == first.Key {
+ j++
+ }
+
+ kv, nestedChanged := KeyValue(keyValueAt(storage, j-1))
+ // j-i > 1 means the current key run contained duplicates.
+ changed := nestedChanged || j-i > 1
+ if normalized != nil {
+ normalized = append(normalized, kv)
+ } else if changed {
+ normalized = make([]attribute.KeyValue, 0, length)
+ for k := range i {
+ normalized = append(normalized, keyValueAt(storage, k))
+ }
+ normalized = append(normalized, kv)
+ }
+ i = j
+ }
+ if normalized == nil {
+ return value, false
+ }
+ return attribute.MapValue(normalized...), true
+}
+
+func valueStorage(value attribute.Value) any {
+ // attribute.Value does not expose allocation-free map/slice iteration.
+ // The raw mirror lets us read the immutable backing array directly and
+ // reserve AsMap/AsSlice-style allocation for paths that actually change.
+ return (*rawValue)(
+ unsafe.Pointer(&value),
+ ).slice //nolint:gosec // Read-only mirror of attribute.Value for allocation-free iteration.
+}
+
+func valueLen(storage any) int {
+ // attribute.Value stores small slices in fixed-size array values. Handle
+ // the common sizes directly and fall back to reflection for larger arrays.
+ switch storage.(type) {
+ case [0]attribute.Value:
+ return 0
+ case [1]attribute.Value:
+ return 1
+ case [2]attribute.Value:
+ return 2
+ case [3]attribute.Value:
+ return 3
+ case [4]attribute.Value:
+ return 4
+ case [5]attribute.Value:
+ return 5
+ default:
+ return arrayLen(storage, valueType)
+ }
+}
+
+func valueAt(storage any, i int) attribute.Value {
+ switch values := storage.(type) {
+ case [1]attribute.Value:
+ return values[i]
+ case [2]attribute.Value:
+ return values[i]
+ case [3]attribute.Value:
+ return values[i]
+ case [4]attribute.Value:
+ return values[i]
+ case [5]attribute.Value:
+ return values[i]
+ default:
+ return arrayAt[attribute.Value](storage, valueType, i)
+ }
+}
+
+func keyValueLen(storage any) int {
+ // attribute.Value stores small maps in fixed-size key-value arrays. Handle
+ // the common sizes directly and fall back to reflection for larger arrays.
+ switch storage.(type) {
+ case [0]attribute.KeyValue:
+ return 0
+ case [1]attribute.KeyValue:
+ return 1
+ case [2]attribute.KeyValue:
+ return 2
+ case [3]attribute.KeyValue:
+ return 3
+ case [4]attribute.KeyValue:
+ return 4
+ case [5]attribute.KeyValue:
+ return 5
+ default:
+ return arrayLen(storage, keyValueType)
+ }
+}
+
+func keyValueAt(storage any, i int) attribute.KeyValue {
+ switch kvs := storage.(type) {
+ case [1]attribute.KeyValue:
+ return kvs[i]
+ case [2]attribute.KeyValue:
+ return kvs[i]
+ case [3]attribute.KeyValue:
+ return kvs[i]
+ case [4]attribute.KeyValue:
+ return kvs[i]
+ case [5]attribute.KeyValue:
+ return kvs[i]
+ default:
+ return arrayAt[attribute.KeyValue](storage, keyValueType, i)
+ }
+}
+
+func arrayLen(storage any, elem reflect.Type) int {
+ // Be defensive around invalid or unexpected Value storage. Returning zero
+ // makes malformed storage a no-op instead of panicking in telemetry paths.
+ array := reflect.ValueOf(storage)
+ if array.Kind() != reflect.Array || array.Type().Elem() != elem {
+ return 0
+ }
+ return array.Len()
+}
+
+func arrayAt[T any](storage any, elem reflect.Type, i int) T {
+ // Match arrayLen's fail-closed behavior for unexpected storage.
+ array := reflect.ValueOf(storage)
+ if array.Kind() != reflect.Array || array.Type().Elem() != elem || i < 0 || i >= array.Len() {
+ var zero T
+ return zero
+ }
+ return array.Index(i).Interface().(T)
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/truncate.go b/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/truncate.go
new file mode 100644
index 00000000..9955e907
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/internal/attrnorm/truncate.go
@@ -0,0 +1,232 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/attrnorm/truncate.go.tmpl
+
+package attrnorm
+
+import (
+ "slices"
+ "strings"
+ "unicode/utf8"
+
+ "go.opentelemetry.io/otel/attribute"
+)
+
+// Truncate returns a truncated version of attr. Only string, string slice,
+// byte slice, slice, and map attribute values are truncated. String values are
+// truncated to at most a length of limit. Each string slice value is truncated
+// in this fashion (the slice length itself is unaffected), and byte slice
+// values are truncated to at most limit bytes. For slice and map attribute
+// values, the limit is applied recursively to contained values.
+//
+// No truncation is performed for a negative limit.
+func Truncate(limit int, attr attribute.KeyValue) attribute.KeyValue {
+ if limit < 0 {
+ return attr
+ }
+ switch attr.Value.Type() {
+ case attribute.STRING:
+ v := attr.Value.AsString()
+ return attr.Key.String(truncate(limit, v))
+ case attribute.STRINGSLICE:
+ v := attr.Value.AsStringSlice()
+ for i := range v {
+ v[i] = truncate(limit, v[i])
+ }
+ return attr.Key.StringSlice(v)
+ case attribute.BYTESLICE:
+ v := attr.Value.AsString()
+ if len(v) > limit {
+ return attr.Key.ByteSlice([]byte(v[:limit]))
+ }
+ return attr
+ case attribute.SLICE:
+ v := attr.Value.AsSlice()
+ if !slices.ContainsFunc(v, func(e attribute.Value) bool { return needsTruncation(limit, e) }) {
+ return attr
+ }
+ newV := make([]attribute.Value, len(v))
+ for i, elem := range v {
+ newV[i] = TruncateValue(limit, elem)
+ }
+ return attr.Key.Slice(newV...)
+ case attribute.MAP:
+ v := attr.Value.AsMap()
+ if !slices.ContainsFunc(v, func(kv attribute.KeyValue) bool { return needsTruncation(limit, kv.Value) }) {
+ return attr
+ }
+ newV := make([]attribute.KeyValue, len(v))
+ for i, elem := range v {
+ elem.Value = TruncateValue(limit, elem.Value)
+ newV[i] = elem
+ }
+ return attr.Key.Map(newV...)
+ }
+ return attr
+}
+
+// TruncateValue returns a truncated version of v. Only string, string
+// slice, byte slice, and (recursively) slice and map values are modified.
+//
+// No truncation is performed for a negative limit.
+func TruncateValue(limit int, v attribute.Value) attribute.Value {
+ if limit < 0 {
+ return v
+ }
+
+ switch v.Type() {
+ case attribute.STRING:
+ return attribute.StringValue(truncate(limit, v.AsString()))
+ case attribute.STRINGSLICE:
+ ss := v.AsStringSlice()
+ for i := range ss {
+ ss[i] = truncate(limit, ss[i])
+ }
+ return attribute.StringSliceValue(ss)
+ case attribute.BYTESLICE:
+ // len(v.AsString()) is identical to len(v.AsByteSlice()) but
+ // avoids allocating the full slice before truncation.
+ s := v.AsString()
+ if limit >= 0 && len(s) > limit {
+ return attribute.ByteSliceValue([]byte(s[:limit]))
+ }
+ case attribute.SLICE:
+ sl := v.AsSlice()
+ if !slices.ContainsFunc(sl, func(e attribute.Value) bool { return needsTruncation(limit, e) }) {
+ return v
+ }
+ newSl := make([]attribute.Value, len(sl))
+ for i, elem := range sl {
+ newSl[i] = TruncateValue(limit, elem)
+ }
+ return attribute.SliceValue(newSl...)
+ case attribute.MAP:
+ m := v.AsMap()
+ if !slices.ContainsFunc(m, func(kv attribute.KeyValue) bool { return needsTruncation(limit, kv.Value) }) {
+ return v
+ }
+ newM := make([]attribute.KeyValue, len(m))
+ for i, elem := range m {
+ elem.Value = TruncateValue(limit, elem.Value)
+ newM[i] = elem
+ }
+ return attribute.MapValue(newM...)
+ }
+ return v
+}
+
+// stringNeedsTruncation reports whether s would be modified by truncate for the
+// given limit.
+func stringNeedsTruncation(limit int, s string) bool {
+ if limit < 0 || len(s) <= limit {
+ return false
+ }
+ return utf8.RuneCountInString(s) > limit || !utf8.ValidString(s)
+}
+
+// needsTruncation reports whether v would be modified by TruncateValue for the
+// given limit.
+func needsTruncation(limit int, v attribute.Value) bool {
+ switch v.Type() {
+ case attribute.STRING:
+ return stringNeedsTruncation(limit, v.AsString())
+ case attribute.BYTESLICE:
+ // len(v.AsString()) is identical to len(v.AsByteSlice()) but
+ // avoids memory allocation.
+ if limit >= 0 && len(v.AsString()) > limit {
+ return true
+ }
+ case attribute.STRINGSLICE:
+ for _, s := range v.AsStringSlice() {
+ if stringNeedsTruncation(limit, s) {
+ return true
+ }
+ }
+ case attribute.SLICE:
+ return slices.ContainsFunc(v.AsSlice(), func(e attribute.Value) bool { return needsTruncation(limit, e) })
+ case attribute.MAP:
+ return slices.ContainsFunc(
+ v.AsMap(),
+ func(kv attribute.KeyValue) bool { return needsTruncation(limit, kv.Value) },
+ )
+ }
+ return false
+}
+
+// truncate returns a truncated version of s such that it contains less than
+// the limit number of characters. Truncation is applied by returning the limit
+// number of valid characters contained in s.
+//
+// If limit is negative, it returns the original string.
+//
+// UTF-8 is supported. When truncating, all invalid characters are dropped
+// before applying truncation.
+//
+// If s already contains less than the limit number of bytes, it is returned
+// unchanged. No invalid characters are removed.
+func truncate(limit int, s string) string {
+ // This prioritize performance in the following order based on the most
+ // common expected use-cases.
+ //
+ // - Short values less than the default limit (128).
+ // - Strings with valid encodings that exceed the limit.
+ // - No limit.
+ // - Strings with invalid encodings that exceed the limit.
+ if limit < 0 || len(s) <= limit {
+ return s
+ }
+
+ // Optimistically, assume all valid UTF-8.
+ var b strings.Builder
+ count := 0
+ for i, c := range s {
+ if c != utf8.RuneError {
+ count++
+ if count > limit {
+ return s[:i]
+ }
+ continue
+ }
+
+ _, size := utf8.DecodeRuneInString(s[i:])
+ if size == 1 {
+ // Invalid encoding.
+ b.Grow(len(s) - 1)
+ _, _ = b.WriteString(s[:i])
+ s = s[i:]
+ break
+ }
+ }
+
+ // Fast-path, no invalid input.
+ if b.Cap() == 0 {
+ return s
+ }
+
+ // Truncate while validating UTF-8.
+ for i := 0; i < len(s) && count < limit; {
+ c := s[i]
+ if c < utf8.RuneSelf {
+ // Optimization for single byte runes (common case).
+ _ = b.WriteByte(c)
+ i++
+ count++
+ continue
+ }
+
+ _, size := utf8.DecodeRuneInString(s[i:])
+ if size == 1 {
+ // We checked for all 1-byte runes above, this is a RuneError.
+ i++
+ continue
+ }
+
+ _, _ = b.WriteString(s[i : i+size])
+ i += size
+ count++
+ }
+
+ return b.String()
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/x/features.go b/vendor/go.opentelemetry.io/otel/sdk/internal/x/features.go
index 694b64a3..13ff34b2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/internal/x/features.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/internal/x/features.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package x documents experimental features for [go.opentelemetry.io/otel/sdk].
-package x // import "go.opentelemetry.io/otel/sdk/internal/x"
+package x
import "strings"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
index 13347e56..e829d179 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
@@ -1,11 +1,11 @@
-// Code generated by gotmpl. DO NOT MODIFY.
-// source: internal/shared/x/x.go.tmpl
-
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
// Package x documents experimental features for [go.opentelemetry.io/otel/sdk].
-package x // import "go.opentelemetry.io/otel/sdk/internal/x"
+package x
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/aggregation.go b/vendor/go.opentelemetry.io/otel/sdk/metric/aggregation.go
index e6f5cfb2..f52e7ea5 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/aggregation.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/aggregation.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"errors"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/cache.go b/vendor/go.opentelemetry.io/otel/sdk/metric/cache.go
index 63b88f08..1d6f6a08 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/cache.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/cache.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"sync"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/config.go b/vendor/go.opentelemetry.io/otel/sdk/metric/config.go
index dda4e086..444a8cfd 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/config.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
@@ -157,6 +157,8 @@ func WithView(views ...View) Option {
// exemplar reservoir, but the exemplar reservoir makes the final decision of
// whether to store an exemplar.
//
+// The filter must not be nil.
+//
// By default, the [exemplar.TraceBasedFilter]
// is used. Exemplars can be entirely disabled by providing the
// [exemplar.AlwaysOffFilter].
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go b/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go
index 51e168c7..61410b33 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go
@@ -86,4 +86,4 @@
//
// See [go.opentelemetry.io/otel/sdk/metric/internal/x] for information about
// the experimental features.
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/env.go b/vendor/go.opentelemetry.io/otel/sdk/metric/env.go
index a6c40379..132664a7 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/env.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/env.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go
index 993f001a..fb124052 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"reflect"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/doc.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/doc.go
index 9f238937..f7e54761 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/doc.go
@@ -3,4 +3,4 @@
// Package exemplar provides an implementation of the OpenTelemetry exemplar
// reservoir to be used in metric collection pipelines.
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/exemplar.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/exemplar.go
index 1ab69467..32913a6e 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/exemplar.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/exemplar.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"time"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go
index b50f5c15..a9efd20d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go
index ce97ab1b..48f2b464 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go
@@ -1,12 +1,10 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"context"
- "math"
- "math/rand/v2"
"sync"
"time"
@@ -26,7 +24,12 @@ func FixedSizeReservoirProvider(k int) ReservoirProvider {
// sample each one. If there are more than k, the Reservoir will then randomly
// sample all additional measurement with a decreasing probability.
func NewFixedSizeReservoir(k int) *FixedSizeReservoir {
- return newFixedSizeReservoir(newStorage(k))
+ r := &FixedSizeReservoir{
+ storage: make([]measurement, k),
+ }
+ r.nt.k = k
+ r.nt.reset()
+ return r
}
var _ Reservoir = &FixedSizeReservoir{}
@@ -37,43 +40,9 @@ var _ Reservoir = &FixedSizeReservoir{}
// additional measurement with a decreasing probability.
type FixedSizeReservoir struct {
reservoir.ConcurrentSafe
- *storage
- mu sync.Mutex
-
- // count is the number of measurement seen.
- count int64
- // next is the next count that will store a measurement at a random index
- // once the reservoir has been filled.
- next int64
- // w is the largest random number in a distribution that is used to compute
- // the next next.
- w float64
-}
-
-func newFixedSizeReservoir(s *storage) *FixedSizeReservoir {
- r := &FixedSizeReservoir{
- storage: s,
- }
- if cap(r.measurements) > 0 {
- r.reset()
- }
- return r
-}
-
-// randomFloat64 returns, as a float64, a uniform pseudo-random number in the
-// open interval (0.0,1.0).
-func (*FixedSizeReservoir) randomFloat64() float64 {
- // TODO: Use an algorithm that avoids rejection sampling. For example:
- //
- // const precision = 1 << 53 // 2^53
- // // Generate an integer in [1, 2^53 - 1]
- // v := rand.Uint64() % (precision - 1) + 1
- // return float64(v) / float64(precision)
- f := rand.Float64()
- for f == 0 {
- f = rand.Float64()
- }
- return f
+ mu sync.Mutex
+ storage []measurement
+ nt nextTracker
}
// Offer accepts the parameters associated with a measurement. The
@@ -88,128 +57,39 @@ func (*FixedSizeReservoir) randomFloat64() float64 {
// parameters are the value and dropped (filtered) attributes of the
// measurement respectively.
func (r *FixedSizeReservoir) Offer(ctx context.Context, t time.Time, n Value, a []attribute.KeyValue) {
- if cap(r.measurements) == 0 {
+ if len(r.storage) == 0 {
return
}
- // The following algorithm is "Algorithm L" from Li, Kim-Hung (4 December
- // 1994). "Reservoir-Sampling Algorithms of Time Complexity
- // O(n(1+log(N/n)))". ACM Transactions on Mathematical Software. 20 (4):
- // 481β493 (https://dl.acm.org/doi/10.1145/198429.198435).
- //
- // A high-level overview of "Algorithm L":
- // 0) Pre-calculate the random count greater than the storage size when
- // an exemplar will be replaced.
- // 1) Accept all measurements offered until the configured storage size is
- // reached.
- // 2) Loop:
- // a) When the pre-calculate count is reached, replace a random
- // existing exemplar with the offered measurement.
- // b) Calculate the next random count greater than the existing one
- // which will replace another exemplars
- //
- // The way a "replacement" count is computed is by looking at `n` number of
- // independent random numbers each corresponding to an offered measurement.
- // Of these numbers the smallest `k` (the same size as the storage
- // capacity) of them are kept as a subset. The maximum value in this
- // subset, called `w` is used to weight another random number generation
- // for the next count that will be considered.
- //
- // By weighting the next count computation like described, it is able to
- // perform a uniformly-weighted sampling algorithm based on the number of
- // samples the reservoir has seen so far. The sampling will "slow down" as
- // more and more samples are offered so as to reduce a bias towards those
- // offered just prior to the end of the collection.
- //
- // This algorithm is preferred because of its balance of simplicity and
- // performance. It will compute three random numbers (the bulk of
- // computation time) for each item that becomes part of the reservoir, but
- // it does not spend any time on items that do not. In particular it has an
- // asymptotic runtime of O(k(1 + log(n/k)) where n is the number of
- // measurements offered and k is the reservoir size.
- //
- // See https://en.wikipedia.org/wiki/Reservoir_sampling for an overview of
- // this and other reservoir sampling algorithms. See
- // https://github.com/MrAlias/reservoir-sampling for a performance
- // comparison of reservoir sampling algorithms.
-
r.mu.Lock()
defer r.mu.Unlock()
- if int(r.count) < cap(r.measurements) {
- r.store(ctx, int(r.count), t, n, a)
- } else if r.count == r.next {
- // Overwrite a random existing measurement with the one offered.
- idx := int(rand.Int64N(int64(cap(r.measurements))))
- r.store(ctx, idx, t, n, a)
- r.advance()
+ sampled, idx := r.nt.shouldSample()
+ if sampled {
+ r.storage[idx].store(ctx, t, n, a)
}
- r.count++
-}
-
-// reset resets r to the initial state.
-func (r *FixedSizeReservoir) reset() {
- // This resets the number of exemplars known.
- r.count = 0
- // Random index inserts should only happen after the storage is full.
- r.next = int64(cap(r.measurements))
-
- // Initial random number in the series used to generate r.next.
- //
- // This is set before r.advance to reset or initialize the random number
- // series. Without doing so it would always be 0 or never restart a new
- // random number series.
- //
- // This maps the uniform random number in (0,1) to a geometric distribution
- // over the same interval. The mean of the distribution is inversely
- // proportional to the storage capacity.
- r.w = math.Exp(math.Log(r.randomFloat64()) / float64(cap(r.measurements)))
-
- r.advance()
-}
-
-// advance updates the count at which the offered measurement will overwrite an
-// existing exemplar.
-func (r *FixedSizeReservoir) advance() {
- // Calculate the next value in the random number series.
- //
- // The current value of r.w is based on the max of a distribution of random
- // numbers (i.e. `w = max(u_1,u_2,...,u_k)` for `k` equal to the capacity
- // of the storage and each `u` in the interval (0,w)). To calculate the
- // next r.w we use the fact that when the next exemplar is selected to be
- // included in the storage an existing one will be dropped, and the
- // corresponding random number in the set used to calculate r.w will also
- // be replaced. The replacement random number will also be within (0,w),
- // therefore the next r.w will be based on the same distribution (i.e.
- // `max(u_1,u_2,...,u_k)`). Therefore, we can sample the next r.w by
- // computing the next random number `u` and take r.w as `w * u^(1/k)`.
- r.w *= math.Exp(math.Log(r.randomFloat64()) / float64(cap(r.measurements)))
- // Use the new random number in the series to calculate the count of the
- // next measurement that will be stored.
- //
- // Given 0 < r.w < 1, each iteration will result in subsequent r.w being
- // smaller. This translates here into the next next being selected against
- // a distribution with a higher mean (i.e. the expected value will increase
- // and replacements become less likely)
- //
- // Important to note, the new r.next will always be at least 1 more than
- // the last r.next.
- r.next += int64(math.Log(r.randomFloat64())/math.Log(1-r.w)) + 1
}
// Collect returns all the held exemplars.
//
-// The Reservoir state is preserved after this call.
+// The stored exemplars are preserved after this call, but the sampling state is reset.
func (r *FixedSizeReservoir) Collect(dest *[]Exemplar) {
- if cap(r.measurements) == 0 {
+ if len(r.storage) == 0 {
*dest = (*dest)[:0]
return
}
r.mu.Lock()
defer r.mu.Unlock()
- r.storage.Collect(dest)
+ *dest = reset(*dest, len(r.storage), len(r.storage))
+ var n int
+ for i := range r.storage {
+ if r.storage[i].exemplar(&(*dest)[n]) {
+ n++
+ }
+ }
+ *dest = (*dest)[:n]
// Call reset here even though it will reset r.count and restart the random
// number series. This will persist any old exemplars as long as no new
// measurements are offered, but it will also prioritize those new
// measurements that are made over the older collection cycle ones.
- r.reset()
+ r.nt.reset()
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go
index dacac3eb..e1001e4d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go
@@ -1,12 +1,13 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"context"
"slices"
"sort"
+ "sync"
"time"
"go.opentelemetry.io/otel/attribute"
@@ -22,29 +23,39 @@ func HistogramReservoirProvider(bounds []float64) ReservoirProvider {
}
}
-// NewHistogramReservoir returns a [HistogramReservoir] that samples the last
-// measurement that falls within a histogram bucket. The histogram bucket
-// upper-boundaries are define by bounds.
+type bucket struct {
+ mu sync.Mutex
+ nt nextTracker
+ measurement
+}
+
+// NewHistogramReservoir returns a [HistogramReservoir] that samples
+// measurements that fall within a histogram bucket using Algorithm L. The
+// histogram bucket upper-boundaries are defined by bounds.
//
// The passed bounds must be sorted before calling this function.
func NewHistogramReservoir(bounds []float64) *HistogramReservoir {
+ buckets := make([]bucket, len(bounds)+1)
+ for i := range buckets {
+ buckets[i].nt.k = 1
+ buckets[i].nt.reset()
+ }
return &HistogramReservoir{
bounds: bounds,
- storage: newStorage(len(bounds) + 1),
+ buckets: buckets,
}
}
var _ Reservoir = &HistogramReservoir{}
-// HistogramReservoir is a [Reservoir] that samples the last measurement that
-// falls within a histogram bucket. The histogram bucket upper-boundaries are
-// define by bounds.
+// HistogramReservoir is a [Reservoir] that samples
+// measurements that fall within a histogram bucket using Algorithm L. The
+// histogram bucket upper-boundaries are defined by bounds.
type HistogramReservoir struct {
reservoir.ConcurrentSafe
- *storage
-
// bounds are bucket bounds in ascending order.
- bounds []float64
+ bounds []float64
+ buckets []bucket
}
// Offer accepts the parameters associated with a measurement. The
@@ -69,14 +80,31 @@ func (r *HistogramReservoir) Offer(ctx context.Context, t time.Time, v Value, a
panic("unknown value type")
}
- idx := sort.SearchFloat64s(r.bounds, n)
+ b := &r.buckets[sort.SearchFloat64s(r.bounds, n)]
- r.store(ctx, idx, t, v, a)
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ sampled, _ := b.nt.shouldSample()
+ if sampled {
+ b.store(ctx, t, v, a)
+ }
}
// Collect returns all the held exemplars.
//
-// The Reservoir state is preserved after this call.
+// The stored exemplars are preserved after this call, but the sampling state is reset.
func (r *HistogramReservoir) Collect(dest *[]Exemplar) {
- r.storage.Collect(dest)
+ *dest = reset(*dest, len(r.buckets), len(r.buckets))
+ var n int
+ for i := range r.buckets {
+ b := &r.buckets[i]
+ b.mu.Lock()
+ if b.exemplar(&(*dest)[n]) {
+ n++
+ }
+ b.nt.reset()
+ b.mu.Unlock()
+ }
+ *dest = (*dest)[:n]
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/next_tracker.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/next_tracker.go
new file mode 100644
index 00000000..da5eb241
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/next_tracker.go
@@ -0,0 +1,154 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package exemplar
+
+import (
+ "math"
+ "math/rand/v2"
+)
+
+// nextTracker tracks the next measurement that should be sampled using Algorithm L.
+type nextTracker struct {
+ // count is the number of measurements seen.
+ count int64
+ // next is the next count that will store a measurement at a random index
+ // once the reservoir has been filled.
+ next int64
+ // w is the largest random number in a distribution that is used to compute
+ // the next next.
+ w float64
+ // k is the size of the reservoir.
+ k int
+}
+
+// reset resets the tracker to the initial state for a reservoir of size k.
+func (t *nextTracker) reset() {
+ t.count = 0
+ if t.k <= 0 {
+ return
+ }
+ // Random index inserts should only happen after the storage is full.
+ // -1 accounts for the fact that advance() will unconditionally add 1 to
+ // t.next below.
+ t.next = int64(t.k) - 1
+
+ // Initial random number in the series used to generate t.next.
+ //
+ // This is set before t.advance to reset or initialize the random number
+ // series. Without doing so it would always be 0 or never restart a new
+ // random number series.
+ //
+ // This maps the uniform random number in (0,1) to a geometric distribution
+ // over the same interval. The mean of the distribution is inversely
+ // proportional to the storage capacity.
+ t.w = math.Exp(math.Log(randomFloat64()) / float64(t.k))
+ t.advance()
+}
+
+// advance updates the count at which the offered measurement will overwrite an
+// existing exemplar.
+func (t *nextTracker) advance() {
+ // Use the current random number in the series to calculate the count of the
+ // next measurement that will be stored.
+ //
+ // Given 0 < t.w < 1, each iteration will result in subsequent t.w being
+ // smaller. This translates here into the next next being selected against
+ // a distribution with a higher mean (i.e. the expected value will increase
+ // and replacements become less likely)
+ //
+ // Important to note, the new t.next will always be at least 1 more than
+ // the last t.next.
+ t.next += int64(math.Log(randomFloat64())/math.Log(1-t.w)) + 1
+
+ // Calculate the next value in the random number series.
+ //
+ // The current value of t.w is based on the max of a distribution of random
+ // numbers (i.e. `w = max(u_1,u_2,...,u_k)` for `k` equal to the capacity
+ // of the storage and each `u` in the interval (0,w)). To calculate the
+ // next t.w we use the fact that when the next exemplar is selected to be
+ // included in the storage an existing one will be dropped, and the
+ // corresponding random number in the set used to calculate t.w will also
+ // be replaced. The replacement random number will also be within (0,w),
+ // therefore the next t.w will be based on the same distribution (i.e.
+ // `max(u_1,u_2,...,u_k)`). Therefore, we can sample the next t.w by
+ // computing the next random number `u` and take t.w as `w * u^(1/k)`.
+ t.w *= math.Exp(math.Log(randomFloat64()) / float64(t.k))
+}
+
+// shouldSample returns true if the measurement should be sampled.
+// It also returns the index at which the measurement should be stored.
+//
+// The following algorithm is "Algorithm L" from Li, Kim-Hung (4 December
+// 1994). "Reservoir-Sampling Algorithms of Time Complexity
+// O(n(1+log(N/n)))". ACM Transactions on Mathematical Software. 20 (4):
+// 481β493 (https://dl.acm.org/doi/10.1145/198429.198435).
+//
+// A high-level overview of "Algorithm L":
+// 0. Pre-calculate the random count greater than the storage size when
+// an exemplar will be replaced.
+// 1. Accept all measurements offered until the configured storage size is
+// reached.
+// 2. Loop:
+// a) When the pre-calculate count is reached, replace a random
+// existing exemplar with the offered measurement.
+// b) Calculate the next random count greater than the existing one
+// which will replace another exemplars
+//
+// The way a "replacement" count is computed is by looking at `n` number of
+// independent random numbers each corresponding to an offered measurement.
+// Of these numbers the smallest `k` (the same size as the storage
+// capacity) of them are kept as a subset. The maximum value in this
+// subset, called `w` is used to weight another random number generation
+// for the next count that will be considered.
+//
+// By weighting the next count computation like described, it is able to
+// perform a uniformly-weighted sampling algorithm based on the number of
+// samples the reservoir has seen so far. The sampling will "slow down" as
+// more and more samples are offered so as to reduce a bias towards those
+// offered just prior to the end of the collection.
+//
+// This algorithm is preferred because of its balance of simplicity and
+// performance. It will compute three random numbers (the bulk of
+// computation time) for each item that becomes part of the reservoir, but
+// it does not spend any time on items that do not. In particular it has an
+// asymptotic runtime of O(k(1 + log(n/k))) where n is the number of
+// measurements offered and k is the reservoir size.
+//
+// See https://en.wikipedia.org/wiki/Reservoir_sampling for an overview of
+// this and other reservoir sampling algorithms. See
+// https://github.com/MrAlias/reservoir-sampling for a performance
+// comparison of reservoir sampling algorithms.
+func (t *nextTracker) shouldSample() (bool, int) {
+ if t.k <= 0 {
+ return false, 0
+ }
+ if t.count < int64(t.k) {
+ idx := int(t.count)
+ t.count++
+ return true, idx
+ }
+ if t.count == t.next {
+ idx := 0
+ if t.k > 1 {
+ idx = int(rand.Int64N(int64(t.k)))
+ }
+ t.advance()
+ t.count++
+ return true, idx
+ }
+ t.count++
+ return false, 0
+}
+
+// randomFloat64 returns a pseudo-random value uniformly selected from
+// {k / 2^53 | 1 <= k < 2^53}.
+func randomFloat64() float64 {
+ // rand.Float64 returns a value in [0, 1). Retry in the extremely
+ // unlikely event that it returns zero to produce a value in (0, 1).
+ f := rand.Float64()
+ for f == 0 {
+ f = rand.Float64()
+ }
+ return f
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/reservoir.go
index ba5cd1a6..a6cfdf44 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/reservoir.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/reservoir.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.go
index 79049602..9a0be05a 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/storage.go
@@ -1,74 +1,41 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import (
"context"
- "sync"
"time"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
-// storage is an exemplar storage for [Reservoir] implementations.
-type storage struct {
- // measurements are the measurements sampled.
- //
- // This does not use []metricdata.Exemplar because it potentially would
- // require an allocation for trace and span IDs in the hot path of Offer.
- measurements []measurement
-}
-
-func newStorage(n int) *storage {
- return &storage{measurements: make([]measurement, n)}
-}
-
-func (r *storage) store(ctx context.Context, idx int, ts time.Time, v Value, droppedAttr []attribute.KeyValue) {
- r.measurements[idx].mux.Lock()
- defer r.measurements[idx].mux.Unlock()
- r.measurements[idx].FilteredAttributes = droppedAttr
- r.measurements[idx].Time = ts
- r.measurements[idx].Value = v
- r.measurements[idx].Ctx = ctx
- r.measurements[idx].valid = true
-}
-
-// Collect returns all the held exemplars.
-//
-// The Reservoir state is preserved after this call.
-func (r *storage) Collect(dest *[]Exemplar) {
- *dest = reset(*dest, len(r.measurements), len(r.measurements))
- var n int
- for i := range r.measurements {
- if r.measurements[i].exemplar(&(*dest)[n]) {
- n++
- }
- }
- *dest = (*dest)[:n]
-}
-
// measurement is a measurement made by a telemetry system.
type measurement struct {
- mux sync.Mutex
// FilteredAttributes are the attributes dropped during the measurement.
FilteredAttributes []attribute.KeyValue
// Time is the time when the measurement was made.
Time time.Time
// Value is the value of the measurement.
Value Value
- // Ctx is the context active when a measurement was made.
- Ctx context.Context
+ // SpanContext is the SpanContext active when a measurement was made.
+ SpanContext trace.SpanContext
valid bool
}
+func (m *measurement) store(ctx context.Context, ts time.Time, v Value, droppedAttr []attribute.KeyValue) {
+ m.FilteredAttributes = droppedAttr
+ m.Time = ts
+ m.Value = v
+ m.SpanContext = trace.SpanContextFromContext(ctx)
+ m.valid = true
+}
+
// exemplar returns m as an [Exemplar].
// returns true if it populated the exemplar.
func (m *measurement) exemplar(dest *Exemplar) bool {
- m.mux.Lock()
- defer m.mux.Unlock()
if !m.valid {
return false
}
@@ -77,7 +44,7 @@ func (m *measurement) exemplar(dest *Exemplar) bool {
dest.Time = m.Time
dest.Value = m.Value
- sc := trace.SpanContextFromContext(m.Ctx)
+ sc := m.SpanContext
if sc.HasTraceID() {
traceID := sc.TraceID()
dest.TraceID = traceID[:]
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/value.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/value.go
index 590b089a..c7d1645b 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/value.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/value.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package exemplar // import "go.opentelemetry.io/otel/sdk/metric/exemplar"
+package exemplar
import "math"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exporter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exporter.go
index 1969cb42..7bec4152 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go
index dfb4964d..31f7afef 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go
@@ -3,7 +3,7 @@
//go:generate stringer -type=InstrumentKind -trimprefix=InstrumentKind
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
@@ -16,6 +16,7 @@ import (
"go.opentelemetry.io/otel/metric/embedded"
"go.opentelemetry.io/otel/sdk/instrumentation"
"go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+ "go.opentelemetry.io/otel/sdk/metric/internal/attrnorm"
)
var zeroScope instrumentation.Scope
@@ -180,6 +181,46 @@ func (i instID) normalize() instID {
return i
}
+type rawAttributesOption interface {
+ RawAttributes() []attribute.KeyValue
+ Experimental()
+}
+
+func extractRawKVs[T any](opts []T) []attribute.KeyValue {
+ var rawKVs []attribute.KeyValue
+ var count int
+ for _, opt := range opts {
+ if r, ok := any(opt).(rawAttributesOption); ok {
+ count++
+ if count == 1 {
+ rawKVs = r.RawAttributes()
+ } else {
+ if count == 2 {
+ // Create a new slice to avoid modifying the original slice from the first option.
+ rawKVs = append([]attribute.KeyValue(nil), rawKVs...)
+ }
+ rawKVs = append(rawKVs, r.RawAttributes()...)
+ }
+ }
+ }
+ return rawKVs
+}
+
+func resolveAttributes(configAttrs attribute.Set, rawKVs []attribute.KeyValue) attribute.Set {
+ configAttrs, _ = attrnorm.Set(configAttrs)
+ if len(rawKVs) == 0 {
+ return configAttrs
+ }
+ rawKVs, _ = attrnorm.KeyValues(rawKVs)
+ merged := make([]attribute.KeyValue, 0, configAttrs.Len()+len(rawKVs))
+ merged = append(merged, configAttrs.ToSlice()...)
+ // rawKVs are appended after configAttrs, meaning they will override any duplicate keys in configAttrs.
+ // This behavior is documented in WithUnsafeAttributes.
+ merged = append(merged, rawKVs...)
+ // TODO(#7743): Defer computing the full attribute.NewSet.
+ return attribute.NewSet(merged...)
+}
+
type int64Inst struct {
measures []aggregate.Measure[int64]
@@ -198,12 +239,14 @@ var (
func (i *int64Inst) Add(ctx context.Context, val int64, opts ...metric.AddOption) {
c := metric.NewAddConfig(opts)
- i.aggregate(ctx, val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ i.aggregate(ctx, val, resolveAttributes(c.Attributes(), rawKVs))
}
func (i *int64Inst) Record(ctx context.Context, val int64, opts ...metric.RecordOption) {
c := metric.NewRecordConfig(opts)
- i.aggregate(ctx, val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ i.aggregate(ctx, val, resolveAttributes(c.Attributes(), rawKVs))
}
func (i *int64Inst) Enabled(context.Context) bool {
@@ -238,12 +281,14 @@ var (
func (i *float64Inst) Add(ctx context.Context, val float64, opts ...metric.AddOption) {
c := metric.NewAddConfig(opts)
- i.aggregate(ctx, val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ i.aggregate(ctx, val, resolveAttributes(c.Attributes(), rawKVs))
}
func (i *float64Inst) Record(ctx context.Context, val float64, opts ...metric.RecordOption) {
c := metric.NewRecordConfig(opts)
- i.aggregate(ctx, val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ i.aggregate(ctx, val, resolveAttributes(c.Attributes(), rawKVs))
}
func (i *float64Inst) Enabled(context.Context) bool {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go
index a35f3bcc..696fc21c 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/aggregate.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.go
index eb69e965..675c23fc 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/atomic.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"math"
@@ -221,23 +221,23 @@ func (l *hotColdWaitGroup) swapHotAndWait() uint64 {
// limitedSyncMap is a sync.Map which enforces the aggregation limit on
// attribute sets and provides a Len() function.
-type limitedSyncMap struct {
+type limitedSyncMap[V any] struct {
sync.Map
aggLimit int
len int
lenMux sync.Mutex
}
-func (m *limitedSyncMap) LoadOrStoreAttr(fltrAttr attribute.Set, newValue func(attribute.Set) any) any {
+func (m *limitedSyncMap[V]) LoadOrStoreAttr(fltrAttr attribute.Set, newValue func(attribute.Set) V) V {
actual, loaded := m.Load(fltrAttr.Equivalent())
if loaded {
- return actual
+ return actual.(V)
}
// If the overflow set exists, assume we have already overflowed and don't
// bother with the slow path below.
actual, loaded = m.Load(overflowSet.Equivalent())
if loaded {
- return actual
+ return actual.(V)
}
// Slow path: add a new attribute set.
m.lenMux.Lock()
@@ -248,7 +248,7 @@ func (m *limitedSyncMap) LoadOrStoreAttr(fltrAttr attribute.Set, newValue func(a
// concurrently.
actual, loaded = m.Load(fltrAttr.Equivalent())
if loaded {
- return actual
+ return actual.(V)
}
if m.aggLimit > 0 && m.len >= m.aggLimit-1 {
@@ -258,17 +258,17 @@ func (m *limitedSyncMap) LoadOrStoreAttr(fltrAttr attribute.Set, newValue func(a
if !loaded {
m.len++
}
- return actual
+ return actual.(V)
}
-func (m *limitedSyncMap) Clear() {
+func (m *limitedSyncMap[V]) Clear() {
m.lenMux.Lock()
defer m.lenMux.Unlock()
m.len = 0
m.Map.Clear()
}
-func (m *limitedSyncMap) Len() int {
+func (m *limitedSyncMap[V]) Len() int {
m.lenMux.Lock()
defer m.lenMux.Unlock()
return m.len
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/doc.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/doc.go
index 7b7225e6..c0399c40 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/doc.go
@@ -4,4 +4,4 @@
// Package aggregate provides aggregate types used compute aggregations and
// cycle the state of metric measurements made by the SDK. These types and
// functionality are meant only for internal SDK use.
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go
index 7adfcaf8..47ec26db 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exemplar.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exemplar.go
index 25d70994..45b62041 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exemplar.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exemplar.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"sync"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go
index 767b1d6d..77c20a31 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
@@ -412,12 +412,15 @@ func (e *expoHistogram[N]) delta(
if !e.noSum {
hDPts[i].Sum = val.sum.load()
+ } else {
+ hDPts[i].Sum = 0
}
- if !e.noMinMax {
- if val.minMax.set.Load() {
- hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
- hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
- }
+ if !e.noMinMax && val.minMax.set.Load() {
+ hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
+ hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
+ } else {
+ hDPts[i].Min = metricdata.Extrema[N]{}
+ hDPts[i].Max = metricdata.Extrema[N]{}
}
collectExemplars(&hDPts[i].Exemplars, val.res.Collect)
@@ -488,12 +491,15 @@ func (e *expoHistogram[N]) cumulative(
if !e.noSum {
hDPts[i].Sum = val.sum.load()
+ } else {
+ hDPts[i].Sum = 0
}
- if !e.noMinMax {
- if val.minMax.set.Load() {
- hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
- hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
- }
+ if !e.noMinMax && val.minMax.set.Load() {
+ hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
+ hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
+ } else {
+ hDPts[i].Min = metricdata.Extrema[N]{}
+ hDPts[i].Max = metricdata.Extrema[N]{}
}
collectExemplars(&hDPts[i].Exemplars, val.res.Collect)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go
index e4f9409b..9aac90f0 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/filtered_reservoir.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go
index 50c82ff3..17807e11 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
@@ -44,8 +44,6 @@ type histogramPointCounters[N int64 | float64] struct {
}
func (b *histogramPointCounters[N]) loadCountsInto(into *[]uint64) uint64 {
- // TODO (#3047): Making copies for counts incurs a large
- // memory allocation footprint. Alternatives should be explored.
counts := reset(*into, len(b.counts), len(b.counts))
count := uint64(0)
for i := range b.counts {
@@ -97,7 +95,7 @@ func (b *histogramPointCounters[N]) mergeIntoAndReset( // nolint:revive // Inten
// unused attribute sets do not report in subsequent collect() calls.
type deltaHistogram[N int64 | float64] struct {
hcwg hotColdWaitGroup
- hotColdValMap [2]limitedSyncMap
+ hotColdValMap [2]limitedSyncMap[*histogramPoint[N]]
start time.Time
noMinMax bool
@@ -114,7 +112,7 @@ func (s *deltaHistogram[N]) measure(
) {
hotIdx := s.hcwg.start()
defer s.hcwg.done(hotIdx)
- h := s.hotColdValMap[hotIdx].LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) any {
+ h := s.hotColdValMap[hotIdx].LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) *histogramPoint[N] {
r := s.newRes(attr)
_, isDrop := r.(*dropRes[N])
hPt := &histogramPoint[N]{
@@ -131,7 +129,7 @@ func (s *deltaHistogram[N]) measure(
histogramPointCounters: histogramPointCounters[N]{counts: make([]atomic.Uint64, len(s.bounds)+1)},
}
return hPt
- }).(*histogramPoint[N])
+ })
// This search will return an index in the range [0, len(s.bounds)], where
// it will return len(s.bounds) if value is greater than the last element
@@ -171,7 +169,7 @@ func newDeltaHistogram[N int64 | float64](
noSum: noSum,
bounds: b,
newRes: r,
- hotColdValMap: [2]limitedSyncMap{
+ hotColdValMap: [2]limitedSyncMap[*histogramPoint[N]]{
{aggLimit: limit},
{aggLimit: limit},
},
@@ -212,13 +210,16 @@ func (s *deltaHistogram[N]) collect(
if !s.noSum {
hDPts[i].Sum = val.total.load()
+ } else {
+ hDPts[i].Sum = 0
}
- if !s.noMinMax {
- if val.minMax.set.Load() {
- hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
- hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
- }
+ if !s.noMinMax && val.minMax.set.Load() {
+ hDPts[i].Min = metricdata.NewExtrema(val.minMax.minimum.Load())
+ hDPts[i].Max = metricdata.NewExtrema(val.minMax.maximum.Load())
+ } else {
+ hDPts[i].Min = metricdata.Extrema[N]{}
+ hDPts[i].Max = metricdata.Extrema[N]{}
}
collectExemplars(&hDPts[i].Exemplars, val.res.Collect)
@@ -249,7 +250,7 @@ func (s *deltaHistogram[N]) collect(
// to reading. Unlike deltaHistogram, this maintains a single map so that the
// preserved attribute sets do not change when collect() is called.
type cumulativeHistogram[N int64 | float64] struct {
- values limitedSyncMap
+ values limitedSyncMap[*hotColdHistogramPoint[N]]
start time.Time
noMinMax bool
@@ -278,7 +279,7 @@ func newCumulativeHistogram[N int64 | float64](
noSum: noSum,
bounds: b,
newRes: r,
- values: limitedSyncMap{aggLimit: limit},
+ values: limitedSyncMap[*hotColdHistogramPoint[N]]{aggLimit: limit},
}
}
@@ -288,7 +289,7 @@ func (s *cumulativeHistogram[N]) measure(
fltrAttr attribute.Set,
droppedAttr []attribute.KeyValue,
) {
- h := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) any {
+ h := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) *hotColdHistogramPoint[N] {
r := s.newRes(attr)
_, isDrop := r.(*dropRes[N])
hPt := &hotColdHistogramPoint[N]{
@@ -313,7 +314,7 @@ func (s *cumulativeHistogram[N]) measure(
},
}
return hPt
- }).(*hotColdHistogramPoint[N])
+ })
// This search will return an index in the range [0, len(s.bounds)], where
// it will return len(s.bounds) if value is greater than the last element
@@ -350,9 +351,16 @@ func (s *cumulativeHistogram[N]) collect(
// Do not allow modification of our copy of bounds.
bounds := slices.Clone(s.bounds)
- // Values are being concurrently written while we iterate, so only use the
- // current length for capacity.
- hDPts := reset(h.DataPoints, 0, s.values.Len())
+ // Pre-size hDPts so per-series destination slots are addressable by index.
+ // This lets loadCountsInto and collectExemplars reuse each slot's existing
+ // BucketCounts/Exemplars slices from the previous cycle. s.values is
+ // append-only here during cumulative collect, and limitedSyncMap only
+ // increments its len after a successful underlying LoadOrStore, so Range
+ // will visit at least n entries. Concurrent measurers may add more between
+ // Len() and Range; those extra slots are appended on demand inside the
+ // loop.
+ n := s.values.Len()
+ hDPts := reset(h.DataPoints, n, n)
perSeriesStartTimeEnabled := x.PerSeriesStartTimestamps.Enabled()
@@ -366,35 +374,41 @@ func (s *cumulativeHistogram[N]) collect(
}
// swap, observe, and clear the point
readIdx := val.hcwg.swapHotAndWait()
- var bucketCounts []uint64
- count := val.hotColdPoint[readIdx].loadCountsInto(&bucketCounts)
- newPt := metricdata.HistogramDataPoint[N]{
- Attributes: val.attrs,
- StartTime: startTime,
- Time: t,
- Count: count,
- Bounds: bounds,
- // The HistogramDataPoint field values returned need to be copies of
- // the histogramPoint value as we will keep updating them.
- BucketCounts: bucketCounts,
- }
+ // Concurrent writers can grow s.values between Len() and Range.
+ // Cold-path grow.
+ if i >= len(hDPts) {
+ hDPts = append(hDPts, metricdata.HistogramDataPoint[N]{})
+ }
+ dp := &hDPts[i]
+
+ count := val.hotColdPoint[readIdx].loadCountsInto(&dp.BucketCounts)
+ dp.Attributes = val.attrs
+ dp.StartTime = startTime
+ dp.Time = t
+ dp.Count = count
+ dp.Bounds = bounds
if !s.noSum {
- newPt.Sum = val.hotColdPoint[readIdx].total.load()
+ dp.Sum = val.hotColdPoint[readIdx].total.load()
+ } else {
+ // Slot may be reused; clear stale Sum from previous series.
+ var zero N
+ dp.Sum = zero
}
- if !s.noMinMax {
- if val.hotColdPoint[readIdx].minMax.set.Load() {
- newPt.Min = metricdata.NewExtrema(val.hotColdPoint[readIdx].minMax.minimum.Load())
- newPt.Max = metricdata.NewExtrema(val.hotColdPoint[readIdx].minMax.maximum.Load())
- }
+ if !s.noMinMax && val.hotColdPoint[readIdx].minMax.set.Load() {
+ dp.Min = metricdata.NewExtrema(val.hotColdPoint[readIdx].minMax.minimum.Load())
+ dp.Max = metricdata.NewExtrema(val.hotColdPoint[readIdx].minMax.maximum.Load())
+ } else {
+ // Slot may be reused; clear stale Min/Max from previous series.
+ dp.Min = metricdata.Extrema[N]{}
+ dp.Max = metricdata.Extrema[N]{}
}
// Once we've read the point, merge it back into the hot histogram
// point since it is cumulative.
hotIdx := (readIdx + 1) % 2
val.hotColdPoint[readIdx].mergeIntoAndReset(&val.hotColdPoint[hotIdx], s.noMinMax, s.noSum)
- collectExemplars(&newPt.Exemplars, val.res.Collect)
- hDPts = append(hDPts, newPt)
+ collectExemplars(&dp.Exemplars, val.res.Collect)
i++
// TODO (#3006): This will use an unbounded amount of memory if there
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go
index 2af252ec..0fddc9dc 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
@@ -24,7 +24,7 @@ type lastValuePoint[N int64 | float64] struct {
// lastValueMap summarizes a set of measurements as the last one made.
type lastValueMap[N int64 | float64] struct {
newRes func(attribute.Set) FilteredExemplarReservoir[N]
- values limitedSyncMap
+ values limitedSyncMap[*lastValuePoint[N]]
}
func (s *lastValueMap[N]) measure(
@@ -33,7 +33,7 @@ func (s *lastValueMap[N]) measure(
fltrAttr attribute.Set,
droppedAttr []attribute.KeyValue,
) {
- lv := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) any {
+ lv := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) *lastValuePoint[N] {
r := s.newRes(attr)
_, isDrop := r.(*dropRes[N])
p := &lastValuePoint[N]{
@@ -44,7 +44,7 @@ func (s *lastValueMap[N]) measure(
}
p.value.Store(value)
return p
- }).(*lastValuePoint[N])
+ })
lv.value.Store(value)
if !lv.dropExemplars {
@@ -61,12 +61,12 @@ func newDeltaLastValue[N int64 | float64](
start: now(),
hotColdValMap: [2]lastValueMap[N]{
{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*lastValuePoint[N]]{aggLimit: limit},
},
{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*lastValuePoint[N]]{aggLimit: limit},
},
},
}
@@ -148,8 +148,8 @@ func newCumulativeLastValue[N int64 | float64](
) *cumulativeLastValue[N] {
return &cumulativeLastValue[N]{
lastValueMap: lastValueMap[N]{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*lastValuePoint[N]]{aggLimit: limit},
},
start: now(),
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.go
index c19a1aff..426a8b27 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/limit.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import "go.opentelemetry.io/otel/attribute"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go
index 0cd3c945..bee5ca37 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package aggregate // import "go.opentelemetry.io/otel/sdk/metric/internal/aggregate"
+package aggregate
import (
"context"
@@ -21,8 +21,8 @@ type sumValue[N int64 | float64] struct {
}
type sumValueMap[N int64 | float64] struct {
- values limitedSyncMap
newRes func(attribute.Set) FilteredExemplarReservoir[N]
+ values limitedSyncMap[*sumValue[N]]
}
func (s *sumValueMap[N]) measure(
@@ -31,7 +31,7 @@ func (s *sumValueMap[N]) measure(
fltrAttr attribute.Set,
droppedAttr []attribute.KeyValue,
) {
- sv := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) any {
+ sv := s.values.LoadOrStoreAttr(fltrAttr, func(attr attribute.Set) *sumValue[N] {
r := s.newRes(attr)
_, isDrop := r.(*dropRes[N])
return &sumValue[N]{
@@ -40,7 +40,7 @@ func (s *sumValueMap[N]) measure(
startTime: now(),
dropExemplars: isDrop,
}
- }).(*sumValue[N])
+ })
sv.n.add(value)
// It is possible for collection to race with measurement and observe the
// exemplar in the batch of metrics after the add() for cumulative sums.
@@ -63,12 +63,12 @@ func newDeltaSum[N int64 | float64](
start: now(),
hotColdValMap: [2]sumValueMap[N]{
{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*sumValue[N]]{aggLimit: limit},
},
{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*sumValue[N]]{aggLimit: limit},
},
},
}
@@ -140,8 +140,8 @@ func newCumulativeSum[N int64 | float64](
monotonic: monotonic,
start: now(),
sumValueMap: sumValueMap[N]{
- values: limitedSyncMap{aggLimit: limit},
newRes: r,
+ values: limitedSyncMap[*sumValue[N]]{aggLimit: limit},
},
}
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/attrnorm/dedup.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/attrnorm/dedup.go
new file mode 100644
index 00000000..fe9ddc96
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/attrnorm/dedup.go
@@ -0,0 +1,300 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/attrnorm/dedup.go.tmpl
+
+// Package attrnorm normalizes attribute values.
+package attrnorm
+
+import (
+ "reflect"
+ "unsafe"
+
+ "go.opentelemetry.io/otel/attribute"
+)
+
+var (
+ keyValueType = reflect.TypeFor[attribute.KeyValue]()
+ valueType = reflect.TypeFor[attribute.Value]()
+)
+
+// rawValue mirrors attribute.Value. It is used only to read immutable slice
+// storage without calling AsMap or AsSlice on no-op paths.
+type rawValue struct {
+ vtype attribute.Type
+ numeric uint64
+ stringly string
+ slice any
+}
+
+// Value returns value with all map values deduplicated and whether it changed.
+//
+// Duplicate map keys are resolved using last-value-wins semantics.
+func Value(value attribute.Value) (attribute.Value, bool) {
+ switch value.Type() {
+ case attribute.SLICE:
+ return deduplicateSliceValue(value)
+ case attribute.MAP:
+ return deduplicateMapValue(value)
+ default:
+ return value, false
+ }
+}
+
+// KeyValue returns kv with all map values deduplicated and whether it changed.
+func KeyValue(kv attribute.KeyValue) (attribute.KeyValue, bool) {
+ value, changed := Value(kv.Value)
+ if changed {
+ kv.Value = value
+ }
+ return kv, changed
+}
+
+// KeyValues returns kvs with all map values deduplicated and whether they changed.
+//
+// The returned slice is the original kvs slice if no value needs
+// deduplication. Top-level keys in kvs are not deduplicated.
+func KeyValues(kvs []attribute.KeyValue) ([]attribute.KeyValue, bool) {
+ // Preserve the caller's slice on the common no-op path. Once a changed
+ // value is found, copy the prior values exactly once and fill the rest in
+ // place as the scan continues.
+ var normalized []attribute.KeyValue
+ for i, kv := range kvs {
+ kv, changed := KeyValue(kv)
+ if normalized != nil {
+ normalized[i] = kv
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.KeyValue, len(kvs))
+ copy(normalized, kvs[:i])
+ normalized[i] = kv
+ }
+ if normalized == nil {
+ return kvs, false
+ }
+ return normalized, true
+}
+
+// Set returns set with all map values deduplicated and whether it changed.
+//
+// The returned Set is the original set if no value needs deduplication.
+// Top-level key uniqueness remains attribute.Set's responsibility; this only
+// normalizes map attribute values.
+func Set(set attribute.Set) (attribute.Set, bool) {
+ if set.Len() == 0 {
+ return set, false
+ }
+
+ // Most attribute sets contain no duplicate map keys. Delay allocation until
+ // the first changed value so the no-op path returns the original Set.
+ var normalized []attribute.KeyValue
+ for i := range set.Len() {
+ kv, _ := set.Get(i)
+ kv, changed := KeyValue(kv)
+ if normalized != nil {
+ normalized = append(normalized, kv)
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.KeyValue, 0, set.Len())
+ for j := range i {
+ prior, _ := set.Get(j)
+ normalized = append(normalized, prior)
+ }
+ normalized = append(normalized, kv)
+ }
+ if normalized == nil {
+ return set, false
+ }
+
+ return attribute.NewSet(normalized...), true
+}
+
+func deduplicateSliceValue(value attribute.Value) (attribute.Value, bool) {
+ storage := valueStorage(value)
+ length := valueLen(storage)
+
+ // Slice values can contain map values, so recurse into each element while
+ // keeping the original attribute.Value when no element changes.
+ var normalized []attribute.Value
+ for i := range length {
+ elem := valueAt(storage, i)
+ elem, changed := Value(elem)
+ if normalized != nil {
+ normalized[i] = elem
+ continue
+ }
+ if !changed {
+ continue
+ }
+
+ normalized = make([]attribute.Value, length)
+ for j := range i {
+ normalized[j] = valueAt(storage, j)
+ }
+ normalized[i] = elem
+ }
+ if normalized == nil {
+ return value, false
+ }
+ return attribute.SliceValue(normalized...), true
+}
+
+func deduplicateMapValue(value attribute.Value) (attribute.Value, bool) {
+ storage := valueStorage(value)
+ length := keyValueLen(storage)
+ if length <= 1 {
+ // A single map entry cannot duplicate its own key, but its value might
+ // contain a map or slice that needs recursive normalization.
+ if length == 1 {
+ kv, changed := KeyValue(keyValueAt(storage, 0))
+ if changed {
+ return attribute.MapValue(kv), true
+ }
+ }
+ return value, false
+ }
+
+ var normalized []attribute.KeyValue
+ for i := 0; i < length; {
+ // attribute.MapValue stores key-values sorted by key using a stable
+ // sort. Equal keys therefore form a contiguous run, and the last
+ // element in that run is the last value provided by the caller.
+ first := keyValueAt(storage, i)
+ j := i + 1
+ for j < length && keyValueAt(storage, j).Key == first.Key {
+ j++
+ }
+
+ kv, nestedChanged := KeyValue(keyValueAt(storage, j-1))
+ // j-i > 1 means the current key run contained duplicates.
+ changed := nestedChanged || j-i > 1
+ if normalized != nil {
+ normalized = append(normalized, kv)
+ } else if changed {
+ normalized = make([]attribute.KeyValue, 0, length)
+ for k := range i {
+ normalized = append(normalized, keyValueAt(storage, k))
+ }
+ normalized = append(normalized, kv)
+ }
+ i = j
+ }
+ if normalized == nil {
+ return value, false
+ }
+ return attribute.MapValue(normalized...), true
+}
+
+func valueStorage(value attribute.Value) any {
+ // attribute.Value does not expose allocation-free map/slice iteration.
+ // The raw mirror lets us read the immutable backing array directly and
+ // reserve AsMap/AsSlice-style allocation for paths that actually change.
+ return (*rawValue)(
+ unsafe.Pointer(&value),
+ ).slice //nolint:gosec // Read-only mirror of attribute.Value for allocation-free iteration.
+}
+
+func valueLen(storage any) int {
+ // attribute.Value stores small slices in fixed-size array values. Handle
+ // the common sizes directly and fall back to reflection for larger arrays.
+ switch storage.(type) {
+ case [0]attribute.Value:
+ return 0
+ case [1]attribute.Value:
+ return 1
+ case [2]attribute.Value:
+ return 2
+ case [3]attribute.Value:
+ return 3
+ case [4]attribute.Value:
+ return 4
+ case [5]attribute.Value:
+ return 5
+ default:
+ return arrayLen(storage, valueType)
+ }
+}
+
+func valueAt(storage any, i int) attribute.Value {
+ switch values := storage.(type) {
+ case [1]attribute.Value:
+ return values[i]
+ case [2]attribute.Value:
+ return values[i]
+ case [3]attribute.Value:
+ return values[i]
+ case [4]attribute.Value:
+ return values[i]
+ case [5]attribute.Value:
+ return values[i]
+ default:
+ return arrayAt[attribute.Value](storage, valueType, i)
+ }
+}
+
+func keyValueLen(storage any) int {
+ // attribute.Value stores small maps in fixed-size key-value arrays. Handle
+ // the common sizes directly and fall back to reflection for larger arrays.
+ switch storage.(type) {
+ case [0]attribute.KeyValue:
+ return 0
+ case [1]attribute.KeyValue:
+ return 1
+ case [2]attribute.KeyValue:
+ return 2
+ case [3]attribute.KeyValue:
+ return 3
+ case [4]attribute.KeyValue:
+ return 4
+ case [5]attribute.KeyValue:
+ return 5
+ default:
+ return arrayLen(storage, keyValueType)
+ }
+}
+
+func keyValueAt(storage any, i int) attribute.KeyValue {
+ switch kvs := storage.(type) {
+ case [1]attribute.KeyValue:
+ return kvs[i]
+ case [2]attribute.KeyValue:
+ return kvs[i]
+ case [3]attribute.KeyValue:
+ return kvs[i]
+ case [4]attribute.KeyValue:
+ return kvs[i]
+ case [5]attribute.KeyValue:
+ return kvs[i]
+ default:
+ return arrayAt[attribute.KeyValue](storage, keyValueType, i)
+ }
+}
+
+func arrayLen(storage any, elem reflect.Type) int {
+ // Be defensive around invalid or unexpected Value storage. Returning zero
+ // makes malformed storage a no-op instead of panicking in telemetry paths.
+ array := reflect.ValueOf(storage)
+ if array.Kind() != reflect.Array || array.Type().Elem() != elem {
+ return 0
+ }
+ return array.Len()
+}
+
+func arrayAt[T any](storage any, elem reflect.Type, i int) T {
+ // Match arrayLen's fail-closed behavior for unexpected storage.
+ array := reflect.ValueOf(storage)
+ if array.Kind() != reflect.Array || array.Type().Elem() != elem || i < 0 || i >= array.Len() {
+ var zero T
+ return zero
+ }
+ return array.Index(i).Interface().(T)
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/gen.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/gen.go
new file mode 100644
index 00000000..5f077dfe
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/gen.go
@@ -0,0 +1,10 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// Package internal provides internal functionality for the sdk/metric package.
+package internal
+
+//go:generate gotmpl --body=../../../internal/shared/x/x.go.tmpl "--data={ \"pkg\": \"go.opentelemetry.io/otel/sdk/metric\" }" --out=x/x.go
+//go:generate gotmpl --body=../../../internal/shared/x/x_test.go.tmpl "--data={}" --out=x/x_test.go
+//go:generate gotmpl --body=../../../internal/shared/attrnorm/dedup.go.tmpl "--data={}" --out=attrnorm/dedup.go
+//go:generate gotmpl --body=../../../internal/shared/attrnorm/dedup_test.go.tmpl "--data={}" --out=attrnorm/dedup_test.go
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.go
index c580dcc3..b09748a7 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/observ/instrumentation.go
@@ -3,7 +3,7 @@
// Package observ provides experimental observability instrumentation for the
// metric reader.
-package observ // import "go.opentelemetry.io/otel/sdk/metric/internal/observ"
+package observ
import (
"context"
@@ -16,8 +16,8 @@ import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/sdk"
"go.opentelemetry.io/otel/sdk/internal/x"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.go
index 3be234a4..8542fd94 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/concurrent_safe.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package reservoir // import "go.opentelemetry.io/otel/sdk/metric/internal/reservoir"
+package reservoir
// ConcurrentSafe is an interface that can be embedded in an
// exemplar.Reservoir to indicate to the SDK that it is safe to invoke its
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.go
index 6cd213b5..6dbf906c 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reservoir/doc.go
@@ -3,4 +3,4 @@
// Package reservoir contains experimental features used by built-in exemplar
// reservoirs which require coordination with the metrics SDK.
-package reservoir // import "go.opentelemetry.io/otel/sdk/metric/internal/reservoir"
+package reservoir
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go
index ea452be6..6ddf0147 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/reuse_slice.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package internal provides internal functionality for the metric package.
-package internal // import "go.opentelemetry.io/otel/sdk/metric/internal"
+package internal
// ReuseSlice returns a zeroed view of slice if its capacity is greater than or
// equal to n. Otherwise, it returns a new []T with capacity equal to n.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/features.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/features.go
new file mode 100644
index 00000000..a8268702
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/features.go
@@ -0,0 +1,22 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package x
+
+import "strconv"
+
+// MetricExportBatchSize is an experimental feature flag that controls the
+// max export batch size for metric data.
+//
+// To enable this feature set the OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE environment
+// variable to a positive integer value.
+var MetricExportBatchSize = newFeature(
+ []string{"METRIC_EXPORT_BATCH_SIZE"},
+ func(v string) (int, bool) {
+ val, err := strconv.Atoi(v)
+ if err == nil && val > 0 {
+ return val, true
+ }
+ return 0, false
+ },
+)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go
index 8e3c62a1..f501984a 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go
@@ -1,36 +1,38 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-// Package x contains support for OTel metric SDK experimental features.
-//
-// This package should only be used for features defined in the specification.
-// It should not be used for experiments or new project ideas.
-package x // import "go.opentelemetry.io/otel/sdk/metric/internal/x"
+// DO NOT MODIFY. Generated by gotmpl.
+// source: internal/shared/x/x.go.tmpl
+
+// Package x documents experimental features for [go.opentelemetry.io/otel/sdk/metric].
+package x
import (
"os"
- "strconv"
)
// Feature is an experimental feature control flag. It provides a uniform way
// to interact with these feature flags and parse their values.
type Feature[T any] struct {
- key string
+ keys []string
parse func(v string) (T, bool)
}
-//nolint:unused
-func newFeature[T any](suffix string, parse func(string) (T, bool)) Feature[T] {
+func newFeature[T any](suffix []string, parse func(string) (T, bool)) Feature[T] {
const envKeyRoot = "OTEL_GO_X_"
+ keys := make([]string, 0, len(suffix))
+ for _, s := range suffix {
+ keys = append(keys, envKeyRoot+s)
+ }
return Feature[T]{
- key: envKeyRoot + suffix,
+ keys: keys,
parse: parse,
}
}
-// Key returns the environment variable key that needs to be set to enable the
+// Keys returns the environment variable keys that can be set to enable the
// feature.
-func (f Feature[T]) Key() string { return f.key }
+func (f Feature[T]) Keys() []string { return f.keys }
// Lookup returns the user configured value for the feature and true if the
// user has enabled the feature. Otherwise, if the feature is not enabled, a
@@ -40,11 +42,13 @@ func (f Feature[T]) Lookup() (v T, ok bool) {
//
// > The SDK MUST interpret an empty value of an environment variable the
// > same way as when the variable is unset.
- vRaw := os.Getenv(f.key)
- if vRaw == "" {
- return v, ok
+ for _, key := range f.keys {
+ vRaw := os.Getenv(key)
+ if vRaw != "" {
+ return f.parse(vRaw)
+ }
}
- return f.parse(vRaw)
+ return v, ok
}
// Enabled reports whether the feature is enabled.
@@ -52,19 +56,3 @@ func (f Feature[T]) Enabled() bool {
_, ok := f.Lookup()
return ok
}
-
-// MetricExportBatchSize is an experimental feature flag that controls the
-// max export batch size for metric data.
-//
-// To enable this feature set the OTEL_GO_X_METRIC_EXPORT_BATCH_SIZE environment
-// variable to a positive integer value.
-var MetricExportBatchSize = newFeature(
- "METRIC_EXPORT_BATCH_SIZE",
- func(v string) (int, bool) {
- val, err := strconv.Atoi(v)
- if err == nil && val > 0 {
- return val, true
- }
- return 0, false
- },
-)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go
index 7e0cccdf..b98e255d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go
index e9a2d595..8c54974e 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
@@ -593,11 +593,13 @@ func (r observer) ObserveFloat64(o metric.Float64Observable, v float64, opts ...
return
}
c := metric.NewObserveConfig(opts)
+ rawKVs := extractRawKVs(opts)
+ set := resolveAttributes(c.Attributes(), rawKVs)
// Access to r.pipe.float64Measure is already guarded by a lock in pipeline.produce.
// TODO (#5946): Refactor pipeline and observable measures.
measures := r.pipe.float64Measures[oImpl.observableID]
for _, m := range measures {
- m(context.Background(), v, c.Attributes())
+ m(context.Background(), v, set)
}
}
@@ -624,11 +626,13 @@ func (r observer) ObserveInt64(o metric.Int64Observable, v int64, opts ...metric
return
}
c := metric.NewObserveConfig(opts)
+ rawKVs := extractRawKVs(opts)
+ set := resolveAttributes(c.Attributes(), rawKVs)
// Access to r.pipe.int64Measures is already guarded b a lock in pipeline.produce.
// TODO (#5946): Refactor pipeline and observable measures.
measures := r.pipe.int64Measures[oImpl.observableID]
for _, m := range measures {
- m(context.Background(), v, c.Attributes())
+ m(context.Background(), v, set)
}
}
@@ -793,7 +797,8 @@ type int64Observer struct {
func (o int64Observer) Observe(val int64, opts ...metric.ObserveOption) {
c := metric.NewObserveConfig(opts)
- o.observe(val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ o.observe(val, resolveAttributes(c.Attributes(), rawKVs))
}
type float64Observer struct {
@@ -803,7 +808,8 @@ type float64Observer struct {
func (o float64Observer) Observe(val float64, opts ...metric.ObserveOption) {
c := metric.NewObserveConfig(opts)
- o.observe(val, c.Attributes())
+ rawKVs := extractRawKVs(opts)
+ o.observe(val, resolveAttributes(c.Attributes(), rawKVs))
}
func defaultAttributes[T any](opts []T) []attribute.Key {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go
index af835e9d..1caed336 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/data.go
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
// Package metricdata provides types for the metric SDK data model.
-package metricdata // import "go.opentelemetry.io/otel/sdk/metric/metricdata"
+package metricdata
import (
"encoding/json"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go
index 2ac840ff..8d7c89d8 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/metricdata/temporality.go
@@ -3,7 +3,7 @@
//go:generate stringer -type=Temporality
-package metricdata // import "go.opentelemetry.io/otel/sdk/metric/metricdata"
+package metricdata
// Temporality defines the window that an aggregation was calculated over.
type Temporality uint8
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go
index c1c2e3e2..9f7712bd 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
@@ -16,7 +16,7 @@ import (
"go.opentelemetry.io/otel/sdk/metric/internal/observ"
"go.opentelemetry.io/otel/sdk/metric/internal/x"
"go.opentelemetry.io/otel/sdk/metric/metricdata"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
// Default periodic reader timing.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go
index 09d10eeb..f04c2ddc 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"container/list"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go b/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go
index fd4cdccd..9f9f01f4 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
@@ -12,6 +12,7 @@ import (
"go.opentelemetry.io/otel/metric/embedded"
"go.opentelemetry.io/otel/metric/noop"
"go.opentelemetry.io/otel/sdk/instrumentation"
+ "go.opentelemetry.io/otel/sdk/metric/internal/attrnorm"
)
// MeterProvider handles the creation and coordination of Meters. All Meters
@@ -76,11 +77,12 @@ func (mp *MeterProvider) Meter(name string, options ...metric.MeterOption) metri
}
c := metric.NewMeterConfig(options...)
+ attrs, _ := attrnorm.Set(c.InstrumentationAttributes())
s := instrumentation.Scope{
Name: name,
Version: c.InstrumentationVersion(),
SchemaURL: c.SchemaURL(),
- Attributes: c.InstrumentationAttributes(),
+ Attributes: attrs,
}
global.Info(
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
index 556afcea..505c9ad9 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/splitmetrics.go b/vendor/go.opentelemetry.io/otel/sdk/metric/splitmetrics.go
index a7931412..b183cf48 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/splitmetrics.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/splitmetrics.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"go.opentelemetry.io/otel/sdk/metric/metricdata"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go
index 3e1bea4b..4c1cd75e 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go
@@ -1,9 +1,9 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
// version is the current release version of the metric SDK in use.
func version() string {
- return "1.44.0"
+ return "1.45.0"
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/view.go b/vendor/go.opentelemetry.io/otel/sdk/metric/view.go
index 13fb7143..3f98928f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/view.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/metric/view.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
+package metric
import (
"errors"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
index c02aeefd..8754313a 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/auto.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
index 28823edd..d5f6dc0a 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
@@ -13,7 +13,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/sdk"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
type (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/config.go b/vendor/go.opentelemetry.io/otel/sdk/resource/config.go
index a3d647d9..c5ffa45d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/config.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/config.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
@@ -23,7 +23,9 @@ type Option interface {
apply(config) config
}
-// WithAttributes adds attributes to the configured Resource.
+// WithAttributes adds attributes to the configured Resource. Duplicate
+// top-level attribute keys and duplicate keys inside map values are
+// resolved using last-value-wins semantics.
func WithAttributes(attributes ...attribute.KeyValue) Option {
return WithDetectors(detectAttributes{attributes})
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
index ce03e24c..c81163bf 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"bufio"
@@ -11,7 +11,7 @@ import (
"os"
"regexp"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
type containerIDProvider func() (string, error)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/doc.go b/vendor/go.opentelemetry.io/otel/sdk/resource/doc.go
index 64939a27..f5a79d3f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/doc.go
@@ -17,4 +17,4 @@
//
// While this package provides a stable API,
// the attributes added by resource detectors may change.
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
index ac5691c0..0eeb1e2a 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
@@ -12,7 +12,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
index cb38fa1a..47219be2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
@@ -1,14 +1,14 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
"errors"
"strings"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
type hostIDProvider func() (string, error)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.go
index 4c1c30f2..bcd17434 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_bsd.go
@@ -3,7 +3,7 @@
//go:build dragonfly || freebsd || netbsd || openbsd || solaris
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
var platformHostIDReader hostIDReader = &hostIDReaderBSD{
execCommand: execCommand,
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_darwin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_darwin.go
index b09fde3b..81ece5b3 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_darwin.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_darwin.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
var platformHostIDReader hostIDReader = &hostIDReaderDarwin{
execCommand: execCommand,
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_exec.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_exec.go
index e239ead0..c058f0d2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_exec.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_exec.go
@@ -3,7 +3,7 @@
//go:build darwin || dragonfly || freebsd || netbsd || openbsd || solaris
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.go
index 4a26096c..26cf6a5d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_linux.go
@@ -3,7 +3,7 @@
//go:build linux
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
var platformHostIDReader hostIDReader = &hostIDReaderLinux{
readFile: readFile,
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_readfile.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_readfile.go
index c95d8768..d955c2c9 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_readfile.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_readfile.go
@@ -3,7 +3,7 @@
//go:build linux || dragonfly || freebsd || netbsd || openbsd || solaris
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import "os"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.go
index 63ad2fa4..9f6ca821 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_unsupported.go
@@ -3,7 +3,7 @@
//go:build !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris && !windows
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
// hostIDReaderUnsupported is a placeholder implementation for operating systems
// for which this project currently doesn't support host.id
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.go
index 2b8ca20b..e9e4a038 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id_windows.go
@@ -3,7 +3,7 @@
//go:build windows
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"golang.org/x/sys/windows/registry"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
index 4c0def41..6af49156 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
@@ -1,14 +1,14 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
"strings"
"go.opentelemetry.io/otel/attribute"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
type osDescriptionProvider func() (string, error)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
index 3d703c5d..f12876d1 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_darwin.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"encoding/xml"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
index a1763267..ad928585 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
@@ -3,7 +3,7 @@
//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"bufio"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go
index 1cd87c39..ba5e48db 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go
@@ -3,7 +3,7 @@
//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"fmt"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.go
index 25f62953..e2c19c2b 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_unsupported.go
@@ -3,7 +3,7 @@
//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris && !windows && !zos
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
// platformOSDescription is a placeholder implementation for OSes
// for which this project currently doesn't support os.description
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_windows.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_windows.go
index ebd50826..9b764895 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_windows.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_windows.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"fmt"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
index b015f823..a578fc32 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
@@ -11,7 +11,7 @@ import (
"path/filepath"
"runtime"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
type (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
index f715be53..68ab274d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package resource // import "go.opentelemetry.io/otel/sdk/resource"
+package resource
import (
"context"
@@ -11,6 +11,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
+ "go.opentelemetry.io/otel/sdk/internal/attrnorm"
"go.opentelemetry.io/otel/sdk/internal/x"
)
@@ -47,6 +48,8 @@ var (
var ErrSchemaURLConflict = errors.New("conflicting Schema URL")
// New returns a [Resource] built using opts.
+// Duplicate top-level attribute keys and duplicate keys inside map
+// values are resolved using last-value-wins semantics.
//
// This may return a partial Resource along with an error containing
// [ErrPartialResource] if options that provide a [Detector] are used and that
@@ -66,25 +69,29 @@ func New(ctx context.Context, opts ...Option) (*Resource, error) {
return r, detect(ctx, r, cfg.detectors)
}
-// NewWithAttributes creates a resource from attrs and associates the resource with a
-// schema URL. If attrs contains duplicate keys, the last value will be used. If attrs
-// contains any invalid items those items will be dropped. The attrs are assumed to be
-// in a schema identified by schemaURL.
+// NewWithAttributes creates a resource from attrs and associates the resource
+// with a schema URL. If attrs contains duplicate top-level attribute keys or
+// duplicate keys inside map values, the last value will be used. If attrs
+// contains any invalid items those items will be dropped. The attrs are assumed
+// to be in a schema identified by schemaURL.
func NewWithAttributes(schemaURL string, attrs ...attribute.KeyValue) *Resource {
resource := NewSchemaless(attrs...)
resource.schemaURL = schemaURL
return resource
}
-// NewSchemaless creates a resource from attrs. If attrs contains duplicate keys,
-// the last value will be used. If attrs contains any invalid items those items will
-// be dropped. The resource will not be associated with a schema URL. If the schema
+// NewSchemaless creates a resource from attrs. If attrs contains duplicate
+// top-level attribute keys or duplicate keys inside map values, the last
+// value will be used. If attrs contains any invalid items those items will be
+// dropped. The resource will not be associated with a schema URL. If the schema
// of the attrs is known use NewWithAttributes instead.
func NewSchemaless(attrs ...attribute.KeyValue) *Resource {
if len(attrs) == 0 {
return &Resource{}
}
+ attrs, _ = attrnorm.KeyValues(attrs)
+
// Ensure attributes comply with the specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/specification/common/README.md#attribute
s, _ := attribute.NewSetWithFiltered(attrs, func(kv attribute.KeyValue) bool {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
index f9f2a6c2..2b9560ee 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
@@ -1,11 +1,12 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
"errors"
+ "fmt"
"sync"
"sync/atomic"
"time"
@@ -435,11 +436,11 @@ func (bsp *batchSpanProcessor) enqueueDrop(ctx context.Context, sd ReadOnlySpan)
func (bsp *batchSpanProcessor) MarshalLog() any {
return struct {
Type string
- SpanExporter SpanExporter
+ SpanExporter string
Config BatchSpanProcessorOptions
}{
Type: "BatchSpanProcessor",
- SpanExporter: bsp.e,
+ SpanExporter: fmt.Sprintf("%T", bsp.e),
Config: bsp.o,
}
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go b/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
index b502c7d4..b292fa31 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
@@ -10,4 +10,4 @@ See https://opentelemetry.io.
See [go.opentelemetry.io/otel/sdk/internal/x] for information about
the experimental features.
*/
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/event.go b/vendor/go.opentelemetry.io/otel/sdk/trace/event.go
index 60a7ed13..49eac045 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/event.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/event.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"time"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go b/vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go
index 8c308dd6..1f62b528 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/evictedqueue.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"slices"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go b/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
index 3649322a..be22ac63 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go
index 58f68df4..1385ae6f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/env/env.go
@@ -3,7 +3,7 @@
// Package env provides types and functionality for environment variable support
// in the OpenTelemetry SDK.
-package env // import "go.opentelemetry.io/otel/sdk/trace/internal/env"
+package env
import (
"os"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go
index c725ebf3..896ed517 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/batch_span_processor.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/sdk/trace/internal/observ"
+package observ
import (
"context"
@@ -13,8 +13,8 @@ import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/sdk"
"go.opentelemetry.io/otel/sdk/internal/x"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
const (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go
index b542121e..64fd5238 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/doc.go
@@ -3,4 +3,4 @@
// Package observ provides observability instrumentation for the OTel trace SDK
// package.
-package observ // import "go.opentelemetry.io/otel/sdk/trace/internal/observ"
+package observ
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go
index cf4b5d48..89922e4b 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/simple_span_processor.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/sdk/trace/internal/observ"
+package observ
import (
"context"
@@ -13,8 +13,8 @@ import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/sdk"
"go.opentelemetry.io/otel/sdk/internal/x"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
)
var measureAttrsPool = sync.Pool{
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go
index 5aae89e8..3428aa89 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/observ/tracer.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package observ // import "go.opentelemetry.io/otel/sdk/trace/internal/observ"
+package observ
import (
"context"
@@ -13,7 +13,7 @@ import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/sdk"
"go.opentelemetry.io/otel/sdk/internal/x"
- "go.opentelemetry.io/otel/semconv/v1.41.0/otelconv"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/otelconv"
"go.opentelemetry.io/otel/trace"
)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/link.go b/vendor/go.opentelemetry.io/otel/sdk/trace/link.go
index c03bdc90..d4a07a71 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/link.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/link.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"go.opentelemetry.io/otel/attribute"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
index 9d90c2ed..6b236841 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
@@ -13,6 +13,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/sdk/instrumentation"
+ "go.opentelemetry.io/otel/sdk/internal/attrnorm"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace/internal/observ"
"go.opentelemetry.io/otel/trace"
@@ -42,22 +43,27 @@ type tracerProviderConfig struct {
// resource contains attributes representing an entity that produces telemetry.
resource *resource.Resource
+
+ // panicRecordingDisabled disables recording exception events from panics.
+ panicRecordingDisabled bool
}
// MarshalLog is the marshaling function used by the logging system to represent this Provider.
func (cfg tracerProviderConfig) MarshalLog() any {
return struct {
- SpanProcessors []SpanProcessor
- SamplerType string
- IDGeneratorType string
- SpanLimits SpanLimits
- Resource *resource.Resource
+ SpanProcessors []SpanProcessor
+ SamplerType string
+ IDGeneratorType string
+ SpanLimits SpanLimits
+ Resource *resource.Resource
+ PanicRecordingDisabled bool
}{
- SpanProcessors: cfg.processors,
- SamplerType: fmt.Sprintf("%T", cfg.sampler),
- IDGeneratorType: fmt.Sprintf("%T", cfg.idGenerator),
- SpanLimits: cfg.spanLimits,
- Resource: cfg.resource,
+ SpanProcessors: cfg.processors,
+ SamplerType: fmt.Sprintf("%T", cfg.sampler),
+ IDGeneratorType: fmt.Sprintf("%T", cfg.idGenerator),
+ SpanLimits: cfg.spanLimits,
+ Resource: cfg.resource,
+ PanicRecordingDisabled: cfg.panicRecordingDisabled,
}
}
@@ -74,10 +80,11 @@ type TracerProvider struct {
// These fields are not protected by the lock mu. They are assumed to be
// immutable after creation of the TracerProvider.
- sampler Sampler
- idGenerator IDGenerator
- spanLimits SpanLimits
- resource *resource.Resource
+ sampler Sampler
+ idGenerator IDGenerator
+ spanLimits SpanLimits
+ resource *resource.Resource
+ panicRecordingDisabled bool
}
var _ trace.TracerProvider = &TracerProvider{}
@@ -112,11 +119,12 @@ func NewTracerProvider(opts ...TracerProviderOption) *TracerProvider {
o = ensureValidTracerProviderConfig(o)
tp := &TracerProvider{
- namedTracer: make(map[instrumentation.Scope]*tracer),
- sampler: o.sampler,
- idGenerator: o.idGenerator,
- spanLimits: o.spanLimits,
- resource: o.resource,
+ namedTracer: make(map[instrumentation.Scope]*tracer),
+ sampler: o.sampler,
+ idGenerator: o.idGenerator,
+ spanLimits: o.spanLimits,
+ resource: o.resource,
+ panicRecordingDisabled: o.panicRecordingDisabled,
}
global.Info("TracerProvider created", "config", o)
@@ -142,6 +150,7 @@ func (p *TracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T
return noop.NewTracerProvider().Tracer(name, opts...)
}
c := trace.NewTracerConfig(opts...)
+ attrs, _ := attrnorm.Set(c.InstrumentationAttributes())
if name == "" {
name = defaultTracerName
}
@@ -149,7 +158,7 @@ func (p *TracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T
Name: name,
Version: c.InstrumentationVersion(),
SchemaURL: c.SchemaURL(),
- Attributes: c.InstrumentationAttributes(),
+ Attributes: attrs,
}
t, ok := func() (trace.Tracer, bool) {
@@ -357,6 +366,16 @@ func WithSpanProcessor(sp SpanProcessor) TracerProviderOption {
})
}
+// WithoutPanicRecording configures the TracerProvider to not record exception
+// events when a Span is ended while panicking. The panic continues to
+// propagate, and the span is ended without adding the event.
+func WithoutPanicRecording() TracerProviderOption {
+ return traceProviderOptionFunc(func(cfg tracerProviderConfig) tracerProviderConfig {
+ cfg.panicRecordingDisabled = true
+ return cfg
+ })
+}
+
// WithResource returns a TracerProviderOption that will configure the
// Resource r as a TracerProvider's Resource. The configured Resource is
// referenced by all the Tracers the TracerProvider creates. It represents the
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go b/vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go
index 9b672a1d..b0fa94ed 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/sampler_env.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"errors"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
index 5a4c7431..c79177ae 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
index 771e427a..e9bec439 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
@@ -1,10 +1,11 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
+ "fmt"
"sync"
"sync/atomic"
@@ -140,11 +141,18 @@ func (*simpleSpanProcessor) ForceFlush(context.Context) error {
// MarshalLog is the marshaling function used by the logging system to represent
// this Span Processor.
func (ssp *simpleSpanProcessor) MarshalLog() any {
+ // Shutdown clears exporter under exporterMu.
+ // Copy it while holding the same lock so MarshalLog
+ // can run concurrently without racing with Shutdown.
+ ssp.exporterMu.Lock()
+ exp := ssp.exporter
+ ssp.exporterMu.Unlock()
+
return struct {
Type string
- Exporter SpanExporter
+ Exporter string
}{
Type: "SimpleSpanProcessor",
- Exporter: ssp.exporter,
+ Exporter: fmt.Sprintf("%T", exp),
}
}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go b/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
index 63aa3378..8893dc39 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"time"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
index d1d9af29..0aae5f5b 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
@@ -10,17 +10,16 @@ import (
"runtime"
rt "runtime/trace"
"slices"
- "strings"
"sync"
"time"
- "unicode/utf8"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/internal/global"
"go.opentelemetry.io/otel/sdk/instrumentation"
+ "go.opentelemetry.io/otel/sdk/internal/attrnorm"
"go.opentelemetry.io/otel/sdk/resource"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
"go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/embedded"
)
@@ -269,7 +268,8 @@ func (s *recordingSpan) SetAttributes(attributes ...attribute.KeyValue) {
s.addDroppedAttr(1)
continue
}
- a = truncateAttr(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
+ a = dedupAttr(a)
+ a = attrnorm.Truncate(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
s.attributes = append(s.attributes, a)
}
}
@@ -329,7 +329,8 @@ func (s *recordingSpan) addOverCapAttrs(limit int, attrs []attribute.KeyValue) {
if idx, ok := exists[a.Key]; ok {
// Perform all updates before dropping, even when at capacity.
- a = truncateAttr(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
+ a = dedupAttr(a)
+ a = attrnorm.Truncate(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
s.attributes[idx] = a
continue
}
@@ -339,208 +340,31 @@ func (s *recordingSpan) addOverCapAttrs(limit int, attrs []attribute.KeyValue) {
// updates are checked and performed.
s.addDroppedAttr(1)
} else {
- a = truncateAttr(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
+ a = dedupAttr(a)
+ a = attrnorm.Truncate(s.tracer.provider.spanLimits.AttributeValueLengthLimit, a)
s.attributes = append(s.attributes, a)
exists[a.Key] = len(s.attributes) - 1
}
}
}
-// truncateAttr returns a truncated version of attr. Only string, string
-// slice, byte slice, and slice attribute values are truncated. String values are truncated
-// to at most a length of limit. Each string slice value is truncated in this
-// fashion (the slice length itself is unaffected), and byte slice values are truncated to at most
-// limit bytes. For slice attribute values, the limit is applied to each
-// element recursively.
-//
-// No truncation is performed for a negative limit.
-func truncateAttr(limit int, attr attribute.KeyValue) attribute.KeyValue {
- if limit < 0 {
- return attr
- }
+func dedupAttr(attr attribute.KeyValue) attribute.KeyValue {
switch attr.Value.Type() {
- case attribute.STRING:
- v := attr.Value.AsString()
- return attr.Key.String(truncate(limit, v))
- case attribute.STRINGSLICE:
- v := attr.Value.AsStringSlice()
- for i := range v {
- v[i] = truncate(limit, v[i])
- }
- return attr.Key.StringSlice(v)
- case attribute.BYTESLICE:
- v := attr.Value.AsString()
- if len(v) > limit {
- return attr.Key.ByteSlice([]byte(v[:limit]))
- }
+ case attribute.SLICE, attribute.MAP:
+ attr, _ = attrnorm.KeyValue(attr)
+ return attr
+ default:
return attr
- case attribute.SLICE:
- v := attr.Value.AsSlice()
- if !slices.ContainsFunc(v, func(e attribute.Value) bool { return needsTruncation(limit, e) }) {
- return attr
- }
- newV := make([]attribute.Value, len(v))
- for i, elem := range v {
- newV[i] = truncateValue(limit, elem)
- }
- return attr.Key.Slice(newV...)
- }
- return attr
-}
-
-// truncateValue returns a truncated version of v. Only string, string slice,
-// byte slice, and (recursively) slice values are modified.
-//
-// No truncation is performed for a negative limit.
-func truncateValue(limit int, v attribute.Value) attribute.Value {
- switch v.Type() {
- case attribute.STRING:
- return attribute.StringValue(truncate(limit, v.AsString()))
- case attribute.STRINGSLICE:
- ss := v.AsStringSlice()
- for i := range ss {
- ss[i] = truncate(limit, ss[i])
- }
- return attribute.StringSliceValue(ss)
-
- case attribute.BYTESLICE:
- // len(v.AsString()) is identical to len(v.AsByteSlice()) but
- // avoids allocating the full slice before truncation.
- s := v.AsString()
- if limit >= 0 && len(s) > limit {
- return attribute.ByteSliceValue([]byte(s[:limit]))
- }
- case attribute.SLICE:
- sl := v.AsSlice()
- if !slices.ContainsFunc(sl, func(e attribute.Value) bool { return needsTruncation(limit, e) }) {
- return v
- }
- newSl := make([]attribute.Value, len(sl))
- for i, elem := range sl {
- newSl[i] = truncateValue(limit, elem)
- }
- return attribute.SliceValue(newSl...)
- }
- return v
-}
-
-// stringNeedsTruncation reports whether s would be modified by truncate for the
-// given limit.
-func stringNeedsTruncation(limit int, s string) bool {
- if limit < 0 || len(s) <= limit {
- return false
- }
- return utf8.RuneCountInString(s) > limit || !utf8.ValidString(s)
-}
-
-// needsTruncation reports whether v would be modified by truncateValue for the
-// given limit.
-func needsTruncation(limit int, v attribute.Value) bool {
- switch v.Type() {
- case attribute.STRING:
- return stringNeedsTruncation(limit, v.AsString())
- case attribute.BYTESLICE:
- // len(v.AsString()) is identical to len(v.AsByteSlice()) but
- // avoids memory allocation.
- if limit >= 0 && len(v.AsString()) > limit {
- return true
- }
- case attribute.STRINGSLICE:
- for _, s := range v.AsStringSlice() {
- if stringNeedsTruncation(limit, s) {
- return true
- }
- }
- case attribute.SLICE:
- return slices.ContainsFunc(v.AsSlice(), func(e attribute.Value) bool { return needsTruncation(limit, e) })
- }
- return false
-}
-
-// truncate returns a truncated version of s such that it contains less than
-// the limit number of characters. Truncation is applied by returning the limit
-// number of valid characters contained in s.
-//
-// If limit is negative, it returns the original string.
-//
-// UTF-8 is supported. When truncating, all invalid characters are dropped
-// before applying truncation.
-//
-// If s already contains less than the limit number of bytes, it is returned
-// unchanged. No invalid characters are removed.
-func truncate(limit int, s string) string {
- // This prioritize performance in the following order based on the most
- // common expected use-cases.
- //
- // - Short values less than the default limit (128).
- // - Strings with valid encodings that exceed the limit.
- // - No limit.
- // - Strings with invalid encodings that exceed the limit.
- if limit < 0 || len(s) <= limit {
- return s
- }
-
- // Optimistically, assume all valid UTF-8.
- var b strings.Builder
- count := 0
- for i, c := range s {
- if c != utf8.RuneError {
- count++
- if count > limit {
- return s[:i]
- }
- continue
- }
-
- _, size := utf8.DecodeRuneInString(s[i:])
- if size == 1 {
- // Invalid encoding.
- b.Grow(len(s) - 1)
- _, _ = b.WriteString(s[:i])
- s = s[i:]
- break
- }
- }
-
- // Fast-path, no invalid input.
- if b.Cap() == 0 {
- return s
- }
-
- // Truncate while validating UTF-8.
- for i := 0; i < len(s) && count < limit; {
- c := s[i]
- if c < utf8.RuneSelf {
- // Optimization for single byte runes (common case).
- _ = b.WriteByte(c)
- i++
- count++
- continue
- }
-
- _, size := utf8.DecodeRuneInString(s[i:])
- if size == 1 {
- // We checked for all 1-byte runes above, this is a RuneError.
- i++
- continue
- }
-
- _, _ = b.WriteString(s[i : i+size])
- i += size
- count++
}
-
- return b.String()
}
// End ends the span. This method does nothing if the span is already ended or
// is not being recorded.
//
-// The only SpanEndOption currently supported are [trace.WithTimestamp], and
-// [trace.WithStackTrace].
-//
-// If this method is called while panicking an error event is added to the
-// Span before ending it and the panic is continued.
+// The only supported SpanEndOptions are [trace.WithTimestamp] and [trace.WithStackTrace].
+// If this method is called while panicking and panic recording is not disabled
+// on the TracerProvider, an error event is added to the Span before ending it
+// and the panic is continued.
func (s *recordingSpan) End(options ...trace.SpanEndOption) {
// Do not start by checking if the span is being recorded which requires
// acquiring a lock. Make a minimal check that the span is not nil.
@@ -560,23 +384,25 @@ func (s *recordingSpan) End(options ...trace.SpanEndOption) {
}
config := trace.NewSpanEndConfig(options...)
- if recovered := recover(); recovered != nil {
- // Record but don't stop the panic.
- defer panic(recovered)
- opts := []trace.EventOption{
- trace.WithAttributes(
- semconv.ExceptionType(typeStr(recovered)),
- semconv.ExceptionMessage(fmt.Sprint(recovered)),
- ),
- }
+ if !s.tracer.provider.panicRecordingDisabled {
+ if recovered := recover(); recovered != nil {
+ // Record but don't stop the panic.
+ defer panic(recovered)
+ opts := []trace.EventOption{
+ trace.WithAttributes(
+ semconv.ExceptionType(typeStr(recovered)),
+ semconv.ExceptionMessage(fmt.Sprint(recovered)),
+ ),
+ }
- if config.StackTrace() {
- opts = append(opts, trace.WithAttributes(
- semconv.ExceptionStacktrace(recordStackTrace()),
- ))
- }
+ if config.StackTrace() {
+ opts = append(opts, trace.WithAttributes(
+ semconv.ExceptionStacktrace(recordStackTrace()),
+ ))
+ }
- s.addEvent(semconv.ExceptionEventName, opts...)
+ s.addEvent(semconv.ExceptionEventName, opts...)
+ }
}
if s.executionTracerTaskEnd != nil {
@@ -690,7 +516,8 @@ func (s *recordingSpan) AddEvent(name string, o ...trace.EventOption) {
// This method assumes s.mu.Lock is held by the caller.
func (s *recordingSpan) addEvent(name string, o ...trace.EventOption) {
c := trace.NewEventConfig(o...)
- e := Event{Name: name, Attributes: c.Attributes(), Time: c.Timestamp()}
+ attrs, _ := attrnorm.KeyValues(c.Attributes())
+ e := Event{Name: name, Attributes: attrs, Time: c.Timestamp()}
// Discard attributes over limit.
limit := s.tracer.provider.spanLimits.AttributePerEventCountLimit
@@ -863,7 +690,8 @@ func (s *recordingSpan) AddLink(link trace.Link) {
return
}
- l := Link{SpanContext: link.SpanContext, Attributes: link.Attributes}
+ attrs, _ := attrnorm.KeyValues(link.Attributes)
+ l := Link{SpanContext: link.SpanContext, Attributes: attrs}
// Discard attributes over limit.
limit := s.tracer.provider.spanLimits.AttributePerLinkCountLimit
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go
index 6bdda3d9..fad839a2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span_exporter.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import "context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go
index 348ee0e8..5ee15a88 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span_limits.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import "go.opentelemetry.io/otel/sdk/trace/internal/env"
@@ -35,10 +35,10 @@ const (
type SpanLimits struct {
// AttributeValueLengthLimit is the maximum allowed attribute value length.
//
- // This limit only applies to string, string slice, byte slice, and slice attribute
- // values. Any string and byte slice longer than this value will be truncated to this
- // length. For slice attribute values, the limit is applied to each string and byte slice
- // element recursively.
+ // This limit only applies to string, string slice, byte slice, slice, and
+ // map attribute values. Any string and byte slice longer than this value
+ // will be truncated to this length. For slice and map attribute values,
+ // the limit is applied recursively to contained values.
//
// Setting this to a negative value means no limit is applied.
AttributeValueLengthLimit int
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go
index af7f9177..ffd093a2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span_processor.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
index e1d08fd4..be576ffe 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
+package trace
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/exporter.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/exporter.go
index e12fa67e..4aa2d562 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/exporter.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/exporter.go
@@ -4,7 +4,7 @@
// Package tracetest is a testing helper package for the SDK. User can
// configure no-op or in-memory exporters to verify different SDK behaviors or
// custom instrumentation.
-package tracetest // import "go.opentelemetry.io/otel/sdk/trace/tracetest"
+package tracetest
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/recorder.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/recorder.go
index ca63038f..11e3d5b3 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/recorder.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/recorder.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package tracetest // import "go.opentelemetry.io/otel/sdk/trace/tracetest"
+package tracetest
import (
"context"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/span.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/span.go
index 12b384b0..6ee1b3f9 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/span.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracetest/span.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package tracetest // import "go.opentelemetry.io/otel/sdk/trace/tracetest"
+package tracetest
import (
"time"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/version.go b/vendor/go.opentelemetry.io/otel/sdk/version.go
index 218dce1f..1619fb3f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/version.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/version.go
@@ -2,9 +2,9 @@
// SPDX-License-Identifier: Apache-2.0
// Package sdk provides the OpenTelemetry default SDK for Go.
-package sdk // import "go.opentelemetry.io/otel/sdk"
+package sdk
// Version is the current release version of the OpenTelemetry SDK in use.
func Version() string {
- return "1.44.0"
+ return "1.45.0"
}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/MIGRATION.md
deleted file mode 100644
index ba52cadf..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/MIGRATION.md
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# Migration from v1.40.0 to v1.41.0
-
-The `go.opentelemetry.io/otel/semconv/v1.41.0` package should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.40.0` with the following exceptions.
-
-## Removed
-
-The following declarations have been removed.
-Refer to the [OpenTelemetry Semantic Conventions documentation] for deprecation instructions.
-
-If the type is not listed in the documentation as deprecated, it has been removed in this version due to lack of applicability or use.
-If you use any of these non-deprecated declarations in your Go application, please [open an issue] describing your use-case.
-
-- `DeploymentEnvironmentName`
-
-[OpenTelemetry Semantic Conventions documentation]: https://github.com/open-telemetry/semantic-conventions
-[open an issue]: https://github.com/open-telemetry/opentelemetry-go/issues/new?template=Blank+issue
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/README.md
deleted file mode 100644
index 8353bb71..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Semconv v1.41.0
-
-[](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.41.0)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/attribute_group.go
deleted file mode 100644
index 1c6fde30..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/attribute_group.go
+++ /dev/null
@@ -1,17289 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv
-
-import "go.opentelemetry.io/otel/attribute"
-
-// Namespace: android
-const (
- // AndroidAppStateKey is the attribute Key conforming to the "android.app.state"
- // semantic conventions. It represents the this attribute represents the state
- // of the application.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "created"
- // Note: The Android lifecycle states are defined in
- // [Activity lifecycle callbacks], and from which the `OS identifiers` are
- // derived.
- //
- // [Activity lifecycle callbacks]: https://developer.android.com/guide/components/activities/activity-lifecycle#lc
- AndroidAppStateKey = attribute.Key("android.app.state")
-
- // AndroidOSAPILevelKey is the attribute Key conforming to the
- // "android.os.api_level" semantic conventions. It represents the uniquely
- // identifies the framework API revision offered by a version (`os.version`) of
- // the android operating system. More information can be found in the
- // [Android API levels documentation].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "33", "32"
- //
- // [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
- AndroidOSAPILevelKey = attribute.Key("android.os.api_level")
-)
-
-// AndroidOSAPILevel returns an attribute KeyValue conforming to the
-// "android.os.api_level" semantic conventions. It represents the uniquely
-// identifies the framework API revision offered by a version (`os.version`) of
-// the android operating system. More information can be found in the
-// [Android API levels documentation].
-//
-// [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
-func AndroidOSAPILevel(val string) attribute.KeyValue {
- return AndroidOSAPILevelKey.String(val)
-}
-
-// Enum values for android.app.state
-var (
- // Any time before Activity.onResume() or, if the app has no Activity,
- // Context.startService() has been called in the app for the first time.
- //
- // Stability: development
- AndroidAppStateCreated = AndroidAppStateKey.String("created")
- // Any time after Activity.onPause() or, if the app has no Activity,
- // Context.stopService() has been called when the app was in the foreground
- // state.
- //
- // Stability: development
- AndroidAppStateBackground = AndroidAppStateKey.String("background")
- // Any time after Activity.onResume() or, if the app has no Activity,
- // Context.startService() has been called when the app was in either the created
- // or background states.
- //
- // Stability: development
- AndroidAppStateForeground = AndroidAppStateKey.String("foreground")
-)
-
-// Namespace: app
-const (
- // AppBuildIDKey is the attribute Key conforming to the "app.build_id" semantic
- // conventions. It represents the unique identifier for a particular build or
- // compilation of the application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "6cff0a7e-cefc-4668-96f5-1273d8b334d0",
- // "9f2b833506aa6973a92fde9733e6271f", "my-app-1.0.0-code-123"
- AppBuildIDKey = attribute.Key("app.build_id")
-
- // AppInstallationIDKey is the attribute Key conforming to the
- // "app.installation.id" semantic conventions. It represents a unique identifier
- // representing the installation of an application on a specific device.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2ab2916d-a51f-4ac8-80ee-45ac31a28092"
- // Note: Its value SHOULD persist across launches of the same application
- // installation, including through application upgrades.
- // It SHOULD change if the application is uninstalled or if all applications of
- // the vendor are uninstalled.
- // Additionally, users might be able to reset this value (e.g. by clearing
- // application data).
- // If an app is installed multiple times on the same device (e.g. in different
- // accounts on Android), each `app.installation.id` SHOULD have a different
- // value.
- // If multiple OpenTelemetry SDKs are used within the same application, they
- // SHOULD use the same value for `app.installation.id`.
- // Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the
- // `app.installation.id`.
- //
- // For iOS, this value SHOULD be equal to the [vendor identifier].
- //
- // For Android, examples of `app.installation.id` implementations include:
- //
- // - [Firebase Installation ID].
- // - A globally unique UUID which is persisted across sessions in your
- // application.
- // - [App set ID].
- // - [`Settings.getString(Settings.Secure.ANDROID_ID)`].
- //
- // More information about Android identifier best practices can be found in the
- // [Android user data IDs guide].
- //
- // [vendor identifier]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor
- // [Firebase Installation ID]: https://firebase.google.com/docs/projects/manage-installations
- // [App set ID]: https://developer.android.com/identity/app-set-id
- // [`Settings.getString(Settings.Secure.ANDROID_ID)`]: https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID
- // [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids
- AppInstallationIDKey = attribute.Key("app.installation.id")
-
- // AppJankFrameCountKey is the attribute Key conforming to the
- // "app.jank.frame_count" semantic conventions. It represents a number of frame
- // renders that experienced jank.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 9, 42
- // Note: Depending on platform limitations, the value provided MAY be
- // approximation.
- AppJankFrameCountKey = attribute.Key("app.jank.frame_count")
-
- // AppJankPeriodKey is the attribute Key conforming to the "app.jank.period"
- // semantic conventions. It represents the time period, in seconds, for which
- // this jank is being reported.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0, 5.0, 10.24
- AppJankPeriodKey = attribute.Key("app.jank.period")
-
- // AppJankThresholdKey is the attribute Key conforming to the
- // "app.jank.threshold" semantic conventions. It represents the minimum
- // rendering threshold for this jank, in seconds.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.016, 0.7, 1.024
- AppJankThresholdKey = attribute.Key("app.jank.threshold")
-
- // AppScreenCoordinateXKey is the attribute Key conforming to the
- // "app.screen.coordinate.x" semantic conventions. It represents the x
- // (horizontal) coordinate of a screen coordinate, in screen pixels.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 131
- AppScreenCoordinateXKey = attribute.Key("app.screen.coordinate.x")
-
- // AppScreenCoordinateYKey is the attribute Key conforming to the
- // "app.screen.coordinate.y" semantic conventions. It represents the y
- // (vertical) component of a screen coordinate, in screen pixels.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 12, 99
- AppScreenCoordinateYKey = attribute.Key("app.screen.coordinate.y")
-
- // AppScreenIDKey is the attribute Key conforming to the "app.screen.id"
- // semantic conventions. It represents an identifier that uniquely
- // differentiates this screen from other screens in the same application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "f9bc787d-ff05-48ad-90e1-fca1d46130b3",
- // "com.example.app.MainActivity", "com.example.shop.ProductDetailFragment",
- // "MyApp.ProfileView", "MyApp.ProfileViewController"
- // Note: A screen represents only the part of the device display drawn by the
- // app. It typically contains multiple widgets or UI components and is larger in
- // scope than individual widgets. Multiple screens can coexist on the same
- // display simultaneously (e.g., split view on tablets).
- AppScreenIDKey = attribute.Key("app.screen.id")
-
- // AppScreenNameKey is the attribute Key conforming to the "app.screen.name"
- // semantic conventions. It represents the name of an application screen.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MainActivity", "ProductDetailFragment", "ProfileView",
- // "ProfileViewController"
- // Note: A screen represents only the part of the device display drawn by the
- // app. It typically contains multiple widgets or UI components and is larger in
- // scope than individual widgets. Multiple screens can coexist on the same
- // display simultaneously (e.g., split view on tablets).
- AppScreenNameKey = attribute.Key("app.screen.name")
-
- // AppWidgetIDKey is the attribute Key conforming to the "app.widget.id"
- // semantic conventions. It represents an identifier that uniquely
- // differentiates this widget from other widgets in the same application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "f9bc787d-ff05-48ad-90e1-fca1d46130b3", "submit_order_1829"
- // Note: A widget is an application component, typically an on-screen visual GUI
- // element.
- AppWidgetIDKey = attribute.Key("app.widget.id")
-
- // AppWidgetNameKey is the attribute Key conforming to the "app.widget.name"
- // semantic conventions. It represents the name of an application widget.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "submit", "attack", "Clear Cart"
- // Note: A widget is an application component, typically an on-screen visual GUI
- // element.
- AppWidgetNameKey = attribute.Key("app.widget.name")
-)
-
-// AppBuildID returns an attribute KeyValue conforming to the "app.build_id"
-// semantic conventions. It represents the unique identifier for a particular
-// build or compilation of the application.
-func AppBuildID(val string) attribute.KeyValue {
- return AppBuildIDKey.String(val)
-}
-
-// AppInstallationID returns an attribute KeyValue conforming to the
-// "app.installation.id" semantic conventions. It represents a unique identifier
-// representing the installation of an application on a specific device.
-func AppInstallationID(val string) attribute.KeyValue {
- return AppInstallationIDKey.String(val)
-}
-
-// AppJankFrameCount returns an attribute KeyValue conforming to the
-// "app.jank.frame_count" semantic conventions. It represents a number of frame
-// renders that experienced jank.
-func AppJankFrameCount(val int) attribute.KeyValue {
- return AppJankFrameCountKey.Int(val)
-}
-
-// AppJankPeriod returns an attribute KeyValue conforming to the
-// "app.jank.period" semantic conventions. It represents the time period, in
-// seconds, for which this jank is being reported.
-func AppJankPeriod(val float64) attribute.KeyValue {
- return AppJankPeriodKey.Float64(val)
-}
-
-// AppJankThreshold returns an attribute KeyValue conforming to the
-// "app.jank.threshold" semantic conventions. It represents the minimum rendering
-// threshold for this jank, in seconds.
-func AppJankThreshold(val float64) attribute.KeyValue {
- return AppJankThresholdKey.Float64(val)
-}
-
-// AppScreenCoordinateX returns an attribute KeyValue conforming to the
-// "app.screen.coordinate.x" semantic conventions. It represents the x
-// (horizontal) coordinate of a screen coordinate, in screen pixels.
-func AppScreenCoordinateX(val int) attribute.KeyValue {
- return AppScreenCoordinateXKey.Int(val)
-}
-
-// AppScreenCoordinateY returns an attribute KeyValue conforming to the
-// "app.screen.coordinate.y" semantic conventions. It represents the y (vertical)
-// component of a screen coordinate, in screen pixels.
-func AppScreenCoordinateY(val int) attribute.KeyValue {
- return AppScreenCoordinateYKey.Int(val)
-}
-
-// AppScreenID returns an attribute KeyValue conforming to the "app.screen.id"
-// semantic conventions. It represents an identifier that uniquely differentiates
-// this screen from other screens in the same application.
-func AppScreenID(val string) attribute.KeyValue {
- return AppScreenIDKey.String(val)
-}
-
-// AppScreenName returns an attribute KeyValue conforming to the
-// "app.screen.name" semantic conventions. It represents the name of an
-// application screen.
-func AppScreenName(val string) attribute.KeyValue {
- return AppScreenNameKey.String(val)
-}
-
-// AppWidgetID returns an attribute KeyValue conforming to the "app.widget.id"
-// semantic conventions. It represents an identifier that uniquely differentiates
-// this widget from other widgets in the same application.
-func AppWidgetID(val string) attribute.KeyValue {
- return AppWidgetIDKey.String(val)
-}
-
-// AppWidgetName returns an attribute KeyValue conforming to the
-// "app.widget.name" semantic conventions. It represents the name of an
-// application widget.
-func AppWidgetName(val string) attribute.KeyValue {
- return AppWidgetNameKey.String(val)
-}
-
-// Namespace: artifact
-const (
- // ArtifactAttestationFilenameKey is the attribute Key conforming to the
- // "artifact.attestation.filename" semantic conventions. It represents the
- // provenance filename of the built attestation which directly relates to the
- // build artifact filename. This filename SHOULD accompany the artifact at
- // publish time. See the [SLSA Relationship] specification for more information.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "golang-binary-amd64-v0.1.0.attestation",
- // "docker-image-amd64-v0.1.0.intoto.json1", "release-1.tar.gz.attestation",
- // "file-name-package.tar.gz.intoto.json1"
- //
- // [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations
- ArtifactAttestationFilenameKey = attribute.Key("artifact.attestation.filename")
-
- // ArtifactAttestationHashKey is the attribute Key conforming to the
- // "artifact.attestation.hash" semantic conventions. It represents the full
- // [hash value (see glossary)], of the built attestation. Some envelopes in the
- // [software attestation space] also refer to this as the **digest**.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408"
- //
- // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec
- ArtifactAttestationHashKey = attribute.Key("artifact.attestation.hash")
-
- // ArtifactAttestationIDKey is the attribute Key conforming to the
- // "artifact.attestation.id" semantic conventions. It represents the id of the
- // build [software attestation].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123"
- //
- // [software attestation]: https://slsa.dev/attestation-model
- ArtifactAttestationIDKey = attribute.Key("artifact.attestation.id")
-
- // ArtifactFilenameKey is the attribute Key conforming to the
- // "artifact.filename" semantic conventions. It represents the human readable
- // file name of the artifact, typically generated during build and release
- // processes. Often includes the package name and version in the file name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "golang-binary-amd64-v0.1.0", "docker-image-amd64-v0.1.0",
- // "release-1.tar.gz", "file-name-package.tar.gz"
- // Note: This file name can also act as the [Package Name]
- // in cases where the package ecosystem maps accordingly.
- // Additionally, the artifact [can be published]
- // for others, but that is not a guarantee.
- //
- // [Package Name]: https://slsa.dev/spec/v1.0/terminology#package-model
- // [can be published]: https://slsa.dev/spec/v1.0/terminology#software-supply-chain
- ArtifactFilenameKey = attribute.Key("artifact.filename")
-
- // ArtifactHashKey is the attribute Key conforming to the "artifact.hash"
- // semantic conventions. It represents the full [hash value (see glossary)],
- // often found in checksum.txt on a release of the artifact and used to verify
- // package integrity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9"
- // Note: The specific algorithm used to create the cryptographic hash value is
- // not defined. In situations where an artifact has multiple
- // cryptographic hashes, it is up to the implementer to choose which
- // hash value to set here; this should be the most secure hash algorithm
- // that is suitable for the situation and consistent with the
- // corresponding attestation. The implementer can then provide the other
- // hash values through an additional set of attribute extensions as they
- // deem necessary.
- //
- // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- ArtifactHashKey = attribute.Key("artifact.hash")
-
- // ArtifactPurlKey is the attribute Key conforming to the "artifact.purl"
- // semantic conventions. It represents the [Package URL] of the
- // [package artifact] provides a standard way to identify and locate the
- // packaged artifact.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pkg:github/package-url/purl-spec@1209109710924",
- // "pkg:npm/foo@12.12.3"
- //
- // [Package URL]: https://github.com/package-url/purl-spec
- // [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model
- ArtifactPurlKey = attribute.Key("artifact.purl")
-
- // ArtifactVersionKey is the attribute Key conforming to the "artifact.version"
- // semantic conventions. It represents the version of the artifact.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "v0.1.0", "1.2.1", "122691-build"
- ArtifactVersionKey = attribute.Key("artifact.version")
-)
-
-// ArtifactAttestationFilename returns an attribute KeyValue conforming to the
-// "artifact.attestation.filename" semantic conventions. It represents the
-// provenance filename of the built attestation which directly relates to the
-// build artifact filename. This filename SHOULD accompany the artifact at
-// publish time. See the [SLSA Relationship] specification for more information.
-//
-// [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations
-func ArtifactAttestationFilename(val string) attribute.KeyValue {
- return ArtifactAttestationFilenameKey.String(val)
-}
-
-// ArtifactAttestationHash returns an attribute KeyValue conforming to the
-// "artifact.attestation.hash" semantic conventions. It represents the full
-// [hash value (see glossary)], of the built attestation. Some envelopes in the
-// [software attestation space] also refer to this as the **digest**.
-//
-// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
-// [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec
-func ArtifactAttestationHash(val string) attribute.KeyValue {
- return ArtifactAttestationHashKey.String(val)
-}
-
-// ArtifactAttestationID returns an attribute KeyValue conforming to the
-// "artifact.attestation.id" semantic conventions. It represents the id of the
-// build [software attestation].
-//
-// [software attestation]: https://slsa.dev/attestation-model
-func ArtifactAttestationID(val string) attribute.KeyValue {
- return ArtifactAttestationIDKey.String(val)
-}
-
-// ArtifactFilename returns an attribute KeyValue conforming to the
-// "artifact.filename" semantic conventions. It represents the human readable
-// file name of the artifact, typically generated during build and release
-// processes. Often includes the package name and version in the file name.
-func ArtifactFilename(val string) attribute.KeyValue {
- return ArtifactFilenameKey.String(val)
-}
-
-// ArtifactHash returns an attribute KeyValue conforming to the "artifact.hash"
-// semantic conventions. It represents the full [hash value (see glossary)],
-// often found in checksum.txt on a release of the artifact and used to verify
-// package integrity.
-//
-// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
-func ArtifactHash(val string) attribute.KeyValue {
- return ArtifactHashKey.String(val)
-}
-
-// ArtifactPurl returns an attribute KeyValue conforming to the "artifact.purl"
-// semantic conventions. It represents the [Package URL] of the
-// [package artifact] provides a standard way to identify and locate the packaged
-// artifact.
-//
-// [Package URL]: https://github.com/package-url/purl-spec
-// [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model
-func ArtifactPurl(val string) attribute.KeyValue {
- return ArtifactPurlKey.String(val)
-}
-
-// ArtifactVersion returns an attribute KeyValue conforming to the
-// "artifact.version" semantic conventions. It represents the version of the
-// artifact.
-func ArtifactVersion(val string) attribute.KeyValue {
- return ArtifactVersionKey.String(val)
-}
-
-// Namespace: aws
-const (
- // AWSBedrockGuardrailIDKey is the attribute Key conforming to the
- // "aws.bedrock.guardrail.id" semantic conventions. It represents the unique
- // identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and
- // prevent unwanted behavior from model responses or user messages.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "sgi5gkybzqak"
- //
- // [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html
- AWSBedrockGuardrailIDKey = attribute.Key("aws.bedrock.guardrail.id")
-
- // AWSBedrockKnowledgeBaseIDKey is the attribute Key conforming to the
- // "aws.bedrock.knowledge_base.id" semantic conventions. It represents the
- // unique identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a
- // bank of information that can be queried by models to generate more relevant
- // responses and augment prompts.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "XFWUPB9PAW"
- //
- // [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html
- AWSBedrockKnowledgeBaseIDKey = attribute.Key("aws.bedrock.knowledge_base.id")
-
- // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to the
- // "aws.dynamodb.attribute_definitions" semantic conventions. It represents the
- // JSON-serialized value of each item in the `AttributeDefinitions` request
- // field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "AttributeName": "string", "AttributeType": "string" }"
- AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions")
-
- // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the
- // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the
- // value of the `AttributesToGet` request parameter.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "lives", "id"
- AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get")
-
- // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the
- // "aws.dynamodb.consistent_read" semantic conventions. It represents the value
- // of the `ConsistentRead` request parameter.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read")
-
- // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
- // JSON-serialized value of each item in the `ConsumedCapacity` response field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" :
- // { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits":
- // number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number,
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number } },
- // "ReadCapacityUnits": number, "Table": { "CapacityUnits": number,
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName":
- // "string", "WriteCapacityUnits": number }"
- AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity")
-
- // AWSDynamoDBCountKey is the attribute Key conforming to the
- // "aws.dynamodb.count" semantic conventions. It represents the value of the
- // `Count` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count")
-
- // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the
- // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the
- // value of the `ExclusiveStartTableName` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Users", "CatsTable"
- AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table")
-
- // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key conforming to
- // the "aws.dynamodb.global_secondary_index_updates" semantic conventions. It
- // represents the JSON-serialized value of each item in the
- // `GlobalSecondaryIndexUpdates` request field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "Create": { "IndexName": "string", "KeySchema": [ {
- // "AttributeName": "string", "KeyType": "string" } ], "Projection": {
- // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" },
- // "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits":
- // number } }"
- AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates")
-
- // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to the
- // "aws.dynamodb.global_secondary_indexes" semantic conventions. It represents
- // the JSON-serialized value of each item of the `GlobalSecondaryIndexes`
- // request field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "IndexName": "string", "KeySchema": [ { "AttributeName":
- // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [
- // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": {
- // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }"
- AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes")
-
- // AWSDynamoDBIndexNameKey is the attribute Key conforming to the
- // "aws.dynamodb.index_name" semantic conventions. It represents the value of
- // the `IndexName` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "name_to_group"
- AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name")
-
- // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to the
- // "aws.dynamodb.item_collection_metrics" semantic conventions. It represents
- // the JSON-serialized value of the `ItemCollectionMetrics` response field.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob,
- // "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" :
- // "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S":
- // "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }"
- AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics")
-
- // AWSDynamoDBLimitKey is the attribute Key conforming to the
- // "aws.dynamodb.limit" semantic conventions. It represents the value of the
- // `Limit` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit")
-
- // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to the
- // "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents
- // the JSON-serialized value of each item of the `LocalSecondaryIndexes` request
- // field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes":
- // number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string",
- // "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ],
- // "ProjectionType": "string" } }"
- AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes")
-
- // AWSDynamoDBProjectionKey is the attribute Key conforming to the
- // "aws.dynamodb.projection" semantic conventions. It represents the value of
- // the `ProjectionExpression` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Title", "Title, Price, Color", "Title, Description, RelatedItems,
- // ProductReviews"
- AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection")
-
- // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.provisioned_read_capacity" semantic conventions. It represents
- // the value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0, 2.0
- AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity")
-
- // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming to the
- // "aws.dynamodb.provisioned_write_capacity" semantic conventions. It represents
- // the value of the `ProvisionedThroughput.WriteCapacityUnits` request
- // parameter.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0, 2.0
- AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity")
-
- // AWSDynamoDBScanForwardKey is the attribute Key conforming to the
- // "aws.dynamodb.scan_forward" semantic conventions. It represents the value of
- // the `ScanIndexForward` request parameter.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward")
-
- // AWSDynamoDBScannedCountKey is the attribute Key conforming to the
- // "aws.dynamodb.scanned_count" semantic conventions. It represents the value of
- // the `ScannedCount` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 50
- AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count")
-
- // AWSDynamoDBSegmentKey is the attribute Key conforming to the
- // "aws.dynamodb.segment" semantic conventions. It represents the value of the
- // `Segment` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10
- AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment")
-
- // AWSDynamoDBSelectKey is the attribute Key conforming to the
- // "aws.dynamodb.select" semantic conventions. It represents the value of the
- // `Select` request parameter.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ALL_ATTRIBUTES", "COUNT"
- AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select")
-
- // AWSDynamoDBTableCountKey is the attribute Key conforming to the
- // "aws.dynamodb.table_count" semantic conventions. It represents the number of
- // items in the `TableNames` response parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 20
- AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count")
-
- // AWSDynamoDBTableNamesKey is the attribute Key conforming to the
- // "aws.dynamodb.table_names" semantic conventions. It represents the keys in
- // the `RequestItems` object field.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Users", "Cats"
- AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names")
-
- // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the
- // "aws.dynamodb.total_segments" semantic conventions. It represents the value
- // of the `TotalSegments` request parameter.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments")
-
- // AWSECSClusterARNKey is the attribute Key conforming to the
- // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an
- // [ECS cluster].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster"
- //
- // [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html
- AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn")
-
- // AWSECSContainerARNKey is the attribute Key conforming to the
- // "aws.ecs.container.arn" semantic conventions. It represents the Amazon
- // Resource Name (ARN) of an [ECS container instance].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9"
- //
- // [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html
- AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn")
-
- // AWSECSLaunchtypeKey is the attribute Key conforming to the
- // "aws.ecs.launchtype" semantic conventions. It represents the [launch type]
- // for an ECS task.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [launch type]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html
- AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype")
-
- // AWSECSTaskARNKey is the attribute Key conforming to the "aws.ecs.task.arn"
- // semantic conventions. It represents the ARN of a running [ECS task].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b",
- // "arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd"
- //
- // [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids
- AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn")
-
- // AWSECSTaskFamilyKey is the attribute Key conforming to the
- // "aws.ecs.task.family" semantic conventions. It represents the family name of
- // the [ECS task definition] used to create the ECS task.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-family"
- //
- // [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html
- AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family")
-
- // AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id"
- // semantic conventions. It represents the ID of a running ECS task. The ID MUST
- // be extracted from `task.arn`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10838bed-421f-43ef-870a-f43feacbbb5b",
- // "23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd"
- AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id")
-
- // AWSECSTaskRevisionKey is the attribute Key conforming to the
- // "aws.ecs.task.revision" semantic conventions. It represents the revision for
- // the task definition used to create the ECS task.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "8", "26"
- AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision")
-
- // AWSEKSClusterARNKey is the attribute Key conforming to the
- // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS
- // cluster.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster"
- AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn")
-
- // AWSExtendedRequestIDKey is the attribute Key conforming to the
- // "aws.extended_request_id" semantic conventions. It represents the AWS
- // extended request ID as returned in the response header `x-amz-id-2`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ="
- AWSExtendedRequestIDKey = attribute.Key("aws.extended_request_id")
-
- // AWSKinesisStreamNameKey is the attribute Key conforming to the
- // "aws.kinesis.stream_name" semantic conventions. It represents the name of the
- // AWS Kinesis [stream] the request refers to. Corresponds to the
- // `--stream-name` parameter of the Kinesis [describe-stream] operation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "some-stream-name"
- //
- // [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html
- // [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html
- AWSKinesisStreamNameKey = attribute.Key("aws.kinesis.stream_name")
-
- // AWSLambdaInvokedARNKey is the attribute Key conforming to the
- // "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked
- // ARN as provided on the `Context` passed to the function (
- // `Lambda-Runtime-Invoked-Function-Arn` header on the
- // `/runtime/invocation/next` applicable).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:lambda:us-east-1:123456:function:myfunction:myalias"
- // Note: This may be different from `cloud.resource_id` if an alias is involved.
- AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn")
-
- // AWSLambdaResourceMappingIDKey is the attribute Key conforming to the
- // "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID
- // of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda
- // function. It's contents are read by Lambda and used to trigger a function.
- // This isn't available in the lambda execution context or the lambda runtime
- // environment. This is going to be populated by the AWS SDK for each language
- // when that UUID is present. Some of these operations are
- // Create/Delete/Get/List/Update EventSourceMapping.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "587ad24b-03b9-4413-8202-bbd56b36e5b7"
- //
- // [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
- AWSLambdaResourceMappingIDKey = attribute.Key("aws.lambda.resource_mapping.id")
-
- // AWSLogGroupARNsKey is the attribute Key conforming to the
- // "aws.log.group.arns" semantic conventions. It represents the Amazon Resource
- // Name(s) (ARN) of the AWS log group(s).
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*"
- // Note: See the [log group ARN format documentation].
- //
- // [log group ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format
- AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns")
-
- // AWSLogGroupNamesKey is the attribute Key conforming to the
- // "aws.log.group.names" semantic conventions. It represents the name(s) of the
- // AWS log group(s) an application is writing to.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/aws/lambda/my-function", "opentelemetry-service"
- // Note: Multiple log groups must be supported for cases like multi-container
- // applications, where a single application has sidecar containers, and each
- // write to their own log group.
- AWSLogGroupNamesKey = attribute.Key("aws.log.group.names")
-
- // AWSLogStreamARNsKey is the attribute Key conforming to the
- // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the
- // AWS log stream(s).
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"
- // Note: See the [log stream ARN format documentation]. One log group can
- // contain several log streams, so these ARNs necessarily identify both a log
- // group and a log stream.
- //
- // [log stream ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format
- AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns")
-
- // AWSLogStreamNamesKey is the attribute Key conforming to the
- // "aws.log.stream.names" semantic conventions. It represents the name(s) of the
- // AWS log stream(s) an application is writing to.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"
- AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names")
-
- // AWSRequestIDKey is the attribute Key conforming to the "aws.request_id"
- // semantic conventions. It represents the AWS request ID as returned in the
- // response headers `x-amzn-requestid`, `x-amzn-request-id` or
- // `x-amz-request-id`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "79b9da39-b7ae-508a-a6bc-864b2829c622", "C9ER4AJX75574TDJ"
- AWSRequestIDKey = attribute.Key("aws.request_id")
-
- // AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket"
- // semantic conventions. It represents the S3 bucket name the request refers to.
- // Corresponds to the `--bucket` parameter of the [S3 API] operations.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "some-bucket-name"
- // Note: The `bucket` attribute is applicable to all S3 operations that
- // reference a bucket, i.e. that require the bucket name as a mandatory
- // parameter.
- // This applies to almost all S3 operations except `list-buckets`.
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- AWSS3BucketKey = attribute.Key("aws.s3.bucket")
-
- // AWSS3CopySourceKey is the attribute Key conforming to the
- // "aws.s3.copy_source" semantic conventions. It represents the source object
- // (in the form `bucket`/`key`) for the copy operation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "someFile.yml"
- // Note: The `copy_source` attribute applies to S3 copy operations and
- // corresponds to the `--copy-source` parameter
- // of the [copy-object operation within the S3 API].
- // This applies in particular to the following operations:
- //
- // - [copy-object]
- // - [upload-part-copy]
- //
- //
- // [copy-object operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source")
-
- // AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete"
- // semantic conventions. It represents the delete request container that
- // specifies the objects to be deleted.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean"
- // Note: The `delete` attribute is only applicable to the [delete-object]
- // operation.
- // The `delete` attribute corresponds to the `--delete` parameter of the
- // [delete-objects operation within the S3 API].
- //
- // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html
- // [delete-objects operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html
- AWSS3DeleteKey = attribute.Key("aws.s3.delete")
-
- // AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic
- // conventions. It represents the S3 object key the request refers to.
- // Corresponds to the `--key` parameter of the [S3 API] operations.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "someFile.yml"
- // Note: The `key` attribute is applicable to all object-related S3 operations,
- // i.e. that require the object key as a mandatory parameter.
- // This applies in particular to the following operations:
- //
- // - [copy-object]
- // - [delete-object]
- // - [get-object]
- // - [head-object]
- // - [put-object]
- // - [restore-object]
- // - [select-object-content]
- // - [abort-multipart-upload]
- // - [complete-multipart-upload]
- // - [create-multipart-upload]
- // - [list-parts]
- // - [upload-part]
- // - [upload-part-copy]
- //
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html
- // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html
- // [get-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html
- // [head-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html
- // [put-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html
- // [restore-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html
- // [select-object-content]: https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html
- // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html
- // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html
- // [create-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html
- // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3KeyKey = attribute.Key("aws.s3.key")
-
- // AWSS3PartNumberKey is the attribute Key conforming to the
- // "aws.s3.part_number" semantic conventions. It represents the part number of
- // the part being uploaded in a multipart-upload operation. This is a positive
- // integer between 1 and 10,000.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3456
- // Note: The `part_number` attribute is only applicable to the [upload-part]
- // and [upload-part-copy] operations.
- // The `part_number` attribute corresponds to the `--part-number` parameter of
- // the
- // [upload-part operation within the S3 API].
- //
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- // [upload-part operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- AWSS3PartNumberKey = attribute.Key("aws.s3.part_number")
-
- // AWSS3UploadIDKey is the attribute Key conforming to the "aws.s3.upload_id"
- // semantic conventions. It represents the upload ID that identifies the
- // multipart upload.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ"
- // Note: The `upload_id` attribute applies to S3 multipart-upload operations and
- // corresponds to the `--upload-id` parameter
- // of the [S3 API] multipart operations.
- // This applies in particular to the following operations:
- //
- // - [abort-multipart-upload]
- // - [complete-multipart-upload]
- // - [list-parts]
- // - [upload-part]
- // - [upload-part-copy]
- //
- //
- // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
- // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html
- // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html
- // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html
- // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html
- // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html
- AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id")
-
- // AWSSecretsmanagerSecretARNKey is the attribute Key conforming to the
- // "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN
- // of the Secret stored in the Secrets Manager.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters"
- AWSSecretsmanagerSecretARNKey = attribute.Key("aws.secretsmanager.secret.arn")
-
- // AWSSNSTopicARNKey is the attribute Key conforming to the "aws.sns.topic.arn"
- // semantic conventions. It represents the ARN of the AWS SNS Topic. An Amazon
- // SNS [topic] is a logical access point that acts as a communication channel.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE"
- //
- // [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html
- AWSSNSTopicARNKey = attribute.Key("aws.sns.topic.arn")
-
- // AWSSQSQueueURLKey is the attribute Key conforming to the "aws.sqs.queue.url"
- // semantic conventions. It represents the URL of the AWS SQS Queue. It's a
- // unique identifier for a queue in Amazon Simple Queue Service (SQS) and is
- // used to access the queue and perform actions on it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue"
- AWSSQSQueueURLKey = attribute.Key("aws.sqs.queue.url")
-
- // AWSStepFunctionsActivityARNKey is the attribute Key conforming to the
- // "aws.step_functions.activity.arn" semantic conventions. It represents the ARN
- // of the AWS Step Functions Activity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:states:us-east-1:123456789012:activity:get-greeting"
- AWSStepFunctionsActivityARNKey = attribute.Key("aws.step_functions.activity.arn")
-
- // AWSStepFunctionsStateMachineARNKey is the attribute Key conforming to the
- // "aws.step_functions.state_machine.arn" semantic conventions. It represents
- // the ARN of the AWS Step Functions State Machine.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1"
- AWSStepFunctionsStateMachineARNKey = attribute.Key("aws.step_functions.state_machine.arn")
-)
-
-// AWSBedrockGuardrailID returns an attribute KeyValue conforming to the
-// "aws.bedrock.guardrail.id" semantic conventions. It represents the unique
-// identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and
-// prevent unwanted behavior from model responses or user messages.
-//
-// [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html
-func AWSBedrockGuardrailID(val string) attribute.KeyValue {
- return AWSBedrockGuardrailIDKey.String(val)
-}
-
-// AWSBedrockKnowledgeBaseID returns an attribute KeyValue conforming to the
-// "aws.bedrock.knowledge_base.id" semantic conventions. It represents the unique
-// identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a bank of
-// information that can be queried by models to generate more relevant responses
-// and augment prompts.
-//
-// [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html
-func AWSBedrockKnowledgeBaseID(val string) attribute.KeyValue {
- return AWSBedrockKnowledgeBaseIDKey.String(val)
-}
-
-// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming to
-// the "aws.dynamodb.attribute_definitions" semantic conventions. It represents
-// the JSON-serialized value of each item in the `AttributeDefinitions` request
-// field.
-func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue {
- return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val)
-}
-
-// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to the
-// "aws.dynamodb.attributes_to_get" semantic conventions. It represents the value
-// of the `AttributesToGet` request parameter.
-func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue {
- return AWSDynamoDBAttributesToGetKey.StringSlice(val)
-}
-
-// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the
-// "aws.dynamodb.consistent_read" semantic conventions. It represents the value
-// of the `ConsistentRead` request parameter.
-func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue {
- return AWSDynamoDBConsistentReadKey.Bool(val)
-}
-
-// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to the
-// "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
-// JSON-serialized value of each item in the `ConsumedCapacity` response field.
-func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue {
- return AWSDynamoDBConsumedCapacityKey.StringSlice(val)
-}
-
-// AWSDynamoDBCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.count" semantic conventions. It represents the value of the
-// `Count` response parameter.
-func AWSDynamoDBCount(val int) attribute.KeyValue {
- return AWSDynamoDBCountKey.Int(val)
-}
-
-// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming to the
-// "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the
-// value of the `ExclusiveStartTableName` request parameter.
-func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue {
- return AWSDynamoDBExclusiveStartTableKey.String(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue
-// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic
-// conventions. It represents the JSON-serialized value of each item in the
-// `GlobalSecondaryIndexUpdates` request field.
-func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue {
- return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue conforming to
-// the "aws.dynamodb.global_secondary_indexes" semantic conventions. It
-// represents the JSON-serialized value of each item of the
-// `GlobalSecondaryIndexes` request field.
-func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue {
- return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the
-// "aws.dynamodb.index_name" semantic conventions. It represents the value of the
-// `IndexName` request parameter.
-func AWSDynamoDBIndexName(val string) attribute.KeyValue {
- return AWSDynamoDBIndexNameKey.String(val)
-}
-
-// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming to
-// the "aws.dynamodb.item_collection_metrics" semantic conventions. It represents
-// the JSON-serialized value of the `ItemCollectionMetrics` response field.
-func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue {
- return AWSDynamoDBItemCollectionMetricsKey.String(val)
-}
-
-// AWSDynamoDBLimit returns an attribute KeyValue conforming to the
-// "aws.dynamodb.limit" semantic conventions. It represents the value of the
-// `Limit` request parameter.
-func AWSDynamoDBLimit(val int) attribute.KeyValue {
- return AWSDynamoDBLimitKey.Int(val)
-}
-
-// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming to
-// the "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents
-// the JSON-serialized value of each item of the `LocalSecondaryIndexes` request
-// field.
-func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue {
- return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBProjection returns an attribute KeyValue conforming to the
-// "aws.dynamodb.projection" semantic conventions. It represents the value of the
-// `ProjectionExpression` request parameter.
-func AWSDynamoDBProjection(val string) attribute.KeyValue {
- return AWSDynamoDBProjectionKey.String(val)
-}
-
-// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue conforming to
-// the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It
-// represents the value of the `ProvisionedThroughput.ReadCapacityUnits` request
-// parameter.
-func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue {
- return AWSDynamoDBProvisionedReadCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue conforming
-// to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. It
-// represents the value of the `ProvisionedThroughput.WriteCapacityUnits` request
-// parameter.
-func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue {
- return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of
-// the `ScanIndexForward` request parameter.
-func AWSDynamoDBScanForward(val bool) attribute.KeyValue {
- return AWSDynamoDBScanForwardKey.Bool(val)
-}
-
-// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scanned_count" semantic conventions. It represents the value of
-// the `ScannedCount` response parameter.
-func AWSDynamoDBScannedCount(val int) attribute.KeyValue {
- return AWSDynamoDBScannedCountKey.Int(val)
-}
-
-// AWSDynamoDBSegment returns an attribute KeyValue conforming to the
-// "aws.dynamodb.segment" semantic conventions. It represents the value of the
-// `Segment` request parameter.
-func AWSDynamoDBSegment(val int) attribute.KeyValue {
- return AWSDynamoDBSegmentKey.Int(val)
-}
-
-// AWSDynamoDBSelect returns an attribute KeyValue conforming to the
-// "aws.dynamodb.select" semantic conventions. It represents the value of the
-// `Select` request parameter.
-func AWSDynamoDBSelect(val string) attribute.KeyValue {
- return AWSDynamoDBSelectKey.String(val)
-}
-
-// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_count" semantic conventions. It represents the number of
-// items in the `TableNames` response parameter.
-func AWSDynamoDBTableCount(val int) attribute.KeyValue {
- return AWSDynamoDBTableCountKey.Int(val)
-}
-
-// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_names" semantic conventions. It represents the keys in the
-// `RequestItems` object field.
-func AWSDynamoDBTableNames(val ...string) attribute.KeyValue {
- return AWSDynamoDBTableNamesKey.StringSlice(val)
-}
-
-// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the
-// "aws.dynamodb.total_segments" semantic conventions. It represents the value of
-// the `TotalSegments` request parameter.
-func AWSDynamoDBTotalSegments(val int) attribute.KeyValue {
- return AWSDynamoDBTotalSegmentsKey.Int(val)
-}
-
-// AWSECSClusterARN returns an attribute KeyValue conforming to the
-// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an
-// [ECS cluster].
-//
-// [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html
-func AWSECSClusterARN(val string) attribute.KeyValue {
- return AWSECSClusterARNKey.String(val)
-}
-
-// AWSECSContainerARN returns an attribute KeyValue conforming to the
-// "aws.ecs.container.arn" semantic conventions. It represents the Amazon
-// Resource Name (ARN) of an [ECS container instance].
-//
-// [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html
-func AWSECSContainerARN(val string) attribute.KeyValue {
- return AWSECSContainerARNKey.String(val)
-}
-
-// AWSECSTaskARN returns an attribute KeyValue conforming to the
-// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running
-// [ECS task].
-//
-// [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids
-func AWSECSTaskARN(val string) attribute.KeyValue {
- return AWSECSTaskARNKey.String(val)
-}
-
-// AWSECSTaskFamily returns an attribute KeyValue conforming to the
-// "aws.ecs.task.family" semantic conventions. It represents the family name of
-// the [ECS task definition] used to create the ECS task.
-//
-// [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html
-func AWSECSTaskFamily(val string) attribute.KeyValue {
- return AWSECSTaskFamilyKey.String(val)
-}
-
-// AWSECSTaskID returns an attribute KeyValue conforming to the "aws.ecs.task.id"
-// semantic conventions. It represents the ID of a running ECS task. The ID MUST
-// be extracted from `task.arn`.
-func AWSECSTaskID(val string) attribute.KeyValue {
- return AWSECSTaskIDKey.String(val)
-}
-
-// AWSECSTaskRevision returns an attribute KeyValue conforming to the
-// "aws.ecs.task.revision" semantic conventions. It represents the revision for
-// the task definition used to create the ECS task.
-func AWSECSTaskRevision(val string) attribute.KeyValue {
- return AWSECSTaskRevisionKey.String(val)
-}
-
-// AWSEKSClusterARN returns an attribute KeyValue conforming to the
-// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS
-// cluster.
-func AWSEKSClusterARN(val string) attribute.KeyValue {
- return AWSEKSClusterARNKey.String(val)
-}
-
-// AWSExtendedRequestID returns an attribute KeyValue conforming to the
-// "aws.extended_request_id" semantic conventions. It represents the AWS extended
-// request ID as returned in the response header `x-amz-id-2`.
-func AWSExtendedRequestID(val string) attribute.KeyValue {
- return AWSExtendedRequestIDKey.String(val)
-}
-
-// AWSKinesisStreamName returns an attribute KeyValue conforming to the
-// "aws.kinesis.stream_name" semantic conventions. It represents the name of the
-// AWS Kinesis [stream] the request refers to. Corresponds to the `--stream-name`
-//
-// parameter of the Kinesis [describe-stream] operation.
-//
-// [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html
-//
-// [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html
-func AWSKinesisStreamName(val string) attribute.KeyValue {
- return AWSKinesisStreamNameKey.String(val)
-}
-
-// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the
-// "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked
-// ARN as provided on the `Context` passed to the function (
-// `Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next`
-//
-// applicable).
-func AWSLambdaInvokedARN(val string) attribute.KeyValue {
- return AWSLambdaInvokedARNKey.String(val)
-}
-
-// AWSLambdaResourceMappingID returns an attribute KeyValue conforming to the
-// "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID
-// of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda
-// function. It's contents are read by Lambda and used to trigger a function.
-// This isn't available in the lambda execution context or the lambda runtime
-// environment. This is going to be populated by the AWS SDK for each language
-// when that UUID is present. Some of these operations are
-// Create/Delete/Get/List/Update EventSourceMapping.
-//
-// [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
-func AWSLambdaResourceMappingID(val string) attribute.KeyValue {
- return AWSLambdaResourceMappingIDKey.String(val)
-}
-
-// AWSLogGroupARNs returns an attribute KeyValue conforming to the
-// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource
-// Name(s) (ARN) of the AWS log group(s).
-func AWSLogGroupARNs(val ...string) attribute.KeyValue {
- return AWSLogGroupARNsKey.StringSlice(val)
-}
-
-// AWSLogGroupNames returns an attribute KeyValue conforming to the
-// "aws.log.group.names" semantic conventions. It represents the name(s) of the
-// AWS log group(s) an application is writing to.
-func AWSLogGroupNames(val ...string) attribute.KeyValue {
- return AWSLogGroupNamesKey.StringSlice(val)
-}
-
-// AWSLogStreamARNs returns an attribute KeyValue conforming to the
-// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the
-// AWS log stream(s).
-func AWSLogStreamARNs(val ...string) attribute.KeyValue {
- return AWSLogStreamARNsKey.StringSlice(val)
-}
-
-// AWSLogStreamNames returns an attribute KeyValue conforming to the
-// "aws.log.stream.names" semantic conventions. It represents the name(s) of the
-// AWS log stream(s) an application is writing to.
-func AWSLogStreamNames(val ...string) attribute.KeyValue {
- return AWSLogStreamNamesKey.StringSlice(val)
-}
-
-// AWSRequestID returns an attribute KeyValue conforming to the "aws.request_id"
-// semantic conventions. It represents the AWS request ID as returned in the
-// response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`
-// .
-func AWSRequestID(val string) attribute.KeyValue {
- return AWSRequestIDKey.String(val)
-}
-
-// AWSS3Bucket returns an attribute KeyValue conforming to the "aws.s3.bucket"
-// semantic conventions. It represents the S3 bucket name the request refers to.
-// Corresponds to the `--bucket` parameter of the [S3 API] operations.
-//
-// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
-func AWSS3Bucket(val string) attribute.KeyValue {
- return AWSS3BucketKey.String(val)
-}
-
-// AWSS3CopySource returns an attribute KeyValue conforming to the
-// "aws.s3.copy_source" semantic conventions. It represents the source object (in
-// the form `bucket`/`key`) for the copy operation.
-func AWSS3CopySource(val string) attribute.KeyValue {
- return AWSS3CopySourceKey.String(val)
-}
-
-// AWSS3Delete returns an attribute KeyValue conforming to the "aws.s3.delete"
-// semantic conventions. It represents the delete request container that
-// specifies the objects to be deleted.
-func AWSS3Delete(val string) attribute.KeyValue {
- return AWSS3DeleteKey.String(val)
-}
-
-// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key" semantic
-// conventions. It represents the S3 object key the request refers to.
-// Corresponds to the `--key` parameter of the [S3 API] operations.
-//
-// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html
-func AWSS3Key(val string) attribute.KeyValue {
- return AWSS3KeyKey.String(val)
-}
-
-// AWSS3PartNumber returns an attribute KeyValue conforming to the
-// "aws.s3.part_number" semantic conventions. It represents the part number of
-// the part being uploaded in a multipart-upload operation. This is a positive
-// integer between 1 and 10,000.
-func AWSS3PartNumber(val int) attribute.KeyValue {
- return AWSS3PartNumberKey.Int(val)
-}
-
-// AWSS3UploadID returns an attribute KeyValue conforming to the
-// "aws.s3.upload_id" semantic conventions. It represents the upload ID that
-// identifies the multipart upload.
-func AWSS3UploadID(val string) attribute.KeyValue {
- return AWSS3UploadIDKey.String(val)
-}
-
-// AWSSecretsmanagerSecretARN returns an attribute KeyValue conforming to the
-// "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN of
-// the Secret stored in the Secrets Manager.
-func AWSSecretsmanagerSecretARN(val string) attribute.KeyValue {
- return AWSSecretsmanagerSecretARNKey.String(val)
-}
-
-// AWSSNSTopicARN returns an attribute KeyValue conforming to the
-// "aws.sns.topic.arn" semantic conventions. It represents the ARN of the AWS SNS
-// Topic. An Amazon SNS [topic] is a logical access point that acts as a
-// communication channel.
-//
-// [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html
-func AWSSNSTopicARN(val string) attribute.KeyValue {
- return AWSSNSTopicARNKey.String(val)
-}
-
-// AWSSQSQueueURL returns an attribute KeyValue conforming to the
-// "aws.sqs.queue.url" semantic conventions. It represents the URL of the AWS SQS
-// Queue. It's a unique identifier for a queue in Amazon Simple Queue Service
-// (SQS) and is used to access the queue and perform actions on it.
-func AWSSQSQueueURL(val string) attribute.KeyValue {
- return AWSSQSQueueURLKey.String(val)
-}
-
-// AWSStepFunctionsActivityARN returns an attribute KeyValue conforming to the
-// "aws.step_functions.activity.arn" semantic conventions. It represents the ARN
-// of the AWS Step Functions Activity.
-func AWSStepFunctionsActivityARN(val string) attribute.KeyValue {
- return AWSStepFunctionsActivityARNKey.String(val)
-}
-
-// AWSStepFunctionsStateMachineARN returns an attribute KeyValue conforming to
-// the "aws.step_functions.state_machine.arn" semantic conventions. It represents
-// the ARN of the AWS Step Functions State Machine.
-func AWSStepFunctionsStateMachineARN(val string) attribute.KeyValue {
- return AWSStepFunctionsStateMachineARNKey.String(val)
-}
-
-// Enum values for aws.ecs.launchtype
-var (
- // Amazon EC2
- // Stability: development
- AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2")
- // Amazon Fargate
- // Stability: development
- AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate")
-)
-
-// Namespace: azure
-const (
- // AzureClientIDKey is the attribute Key conforming to the "azure.client.id"
- // semantic conventions. It represents the unique identifier of the client
- // instance.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "3ba4827d-4422-483f-b59f-85b74211c11d", "storage-client-1"
- AzureClientIDKey = attribute.Key("azure.client.id")
-
- // AzureCosmosDBConnectionModeKey is the attribute Key conforming to the
- // "azure.cosmosdb.connection.mode" semantic conventions. It represents the
- // cosmos client connection mode.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AzureCosmosDBConnectionModeKey = attribute.Key("azure.cosmosdb.connection.mode")
-
- // AzureCosmosDBConsistencyLevelKey is the attribute Key conforming to the
- // "azure.cosmosdb.consistency.level" semantic conventions. It represents the
- // account or request [consistency level].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong",
- // "Session"
- //
- // [consistency level]: https://learn.microsoft.com/azure/cosmos-db/consistency-levels
- AzureCosmosDBConsistencyLevelKey = attribute.Key("azure.cosmosdb.consistency.level")
-
- // AzureCosmosDBOperationContactedRegionsKey is the attribute Key conforming to
- // the "azure.cosmosdb.operation.contacted_regions" semantic conventions. It
- // represents the list of regions contacted during operation in the order that
- // they were contacted. If there is more than one region listed, it indicates
- // that the operation was performed on multiple regions i.e. cross-regional
- // call.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "North Central US", "Australia East", "Australia Southeast"
- // Note: Region name matches the format of `displayName` in [Azure Location API]
- //
- // [Azure Location API]: https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations
- AzureCosmosDBOperationContactedRegionsKey = attribute.Key("azure.cosmosdb.operation.contacted_regions")
-
- // AzureCosmosDBOperationRequestChargeKey is the attribute Key conforming to the
- // "azure.cosmosdb.operation.request_charge" semantic conventions. It represents
- // the number of request units consumed by the operation.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 46.18, 1.0
- AzureCosmosDBOperationRequestChargeKey = attribute.Key("azure.cosmosdb.operation.request_charge")
-
- // AzureCosmosDBRequestBodySizeKey is the attribute Key conforming to the
- // "azure.cosmosdb.request.body.size" semantic conventions. It represents the
- // request payload size in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- AzureCosmosDBRequestBodySizeKey = attribute.Key("azure.cosmosdb.request.body.size")
-
- // AzureCosmosDBResponseSubStatusCodeKey is the attribute Key conforming to the
- // "azure.cosmosdb.response.sub_status_code" semantic conventions. It represents
- // the cosmos DB sub status code.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1000, 1002
- AzureCosmosDBResponseSubStatusCodeKey = attribute.Key("azure.cosmosdb.response.sub_status_code")
-
- // AzureResourceProviderNamespaceKey is the attribute Key conforming to the
- // "azure.resource_provider.namespace" semantic conventions. It represents the
- // [Azure Resource Provider Namespace] as recognized by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus"
- //
- // [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
- AzureResourceProviderNamespaceKey = attribute.Key("azure.resource_provider.namespace")
-
- // AzureServiceRequestIDKey is the attribute Key conforming to the
- // "azure.service.request.id" semantic conventions. It represents the unique
- // identifier of the service request. It's generated by the Azure service and
- // returned with the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "00000000-0000-0000-0000-000000000000"
- AzureServiceRequestIDKey = attribute.Key("azure.service.request.id")
-)
-
-// AzureClientID returns an attribute KeyValue conforming to the
-// "azure.client.id" semantic conventions. It represents the unique identifier of
-// the client instance.
-func AzureClientID(val string) attribute.KeyValue {
- return AzureClientIDKey.String(val)
-}
-
-// AzureCosmosDBOperationContactedRegions returns an attribute KeyValue
-// conforming to the "azure.cosmosdb.operation.contacted_regions" semantic
-// conventions. It represents the list of regions contacted during operation in
-// the order that they were contacted. If there is more than one region listed,
-// it indicates that the operation was performed on multiple regions i.e.
-// cross-regional call.
-func AzureCosmosDBOperationContactedRegions(val ...string) attribute.KeyValue {
- return AzureCosmosDBOperationContactedRegionsKey.StringSlice(val)
-}
-
-// AzureCosmosDBOperationRequestCharge returns an attribute KeyValue conforming
-// to the "azure.cosmosdb.operation.request_charge" semantic conventions. It
-// represents the number of request units consumed by the operation.
-func AzureCosmosDBOperationRequestCharge(val float64) attribute.KeyValue {
- return AzureCosmosDBOperationRequestChargeKey.Float64(val)
-}
-
-// AzureCosmosDBRequestBodySize returns an attribute KeyValue conforming to the
-// "azure.cosmosdb.request.body.size" semantic conventions. It represents the
-// request payload size in bytes.
-func AzureCosmosDBRequestBodySize(val int) attribute.KeyValue {
- return AzureCosmosDBRequestBodySizeKey.Int(val)
-}
-
-// AzureCosmosDBResponseSubStatusCode returns an attribute KeyValue conforming to
-// the "azure.cosmosdb.response.sub_status_code" semantic conventions. It
-// represents the cosmos DB sub status code.
-func AzureCosmosDBResponseSubStatusCode(val int) attribute.KeyValue {
- return AzureCosmosDBResponseSubStatusCodeKey.Int(val)
-}
-
-// AzureResourceProviderNamespace returns an attribute KeyValue conforming to the
-// "azure.resource_provider.namespace" semantic conventions. It represents the
-// [Azure Resource Provider Namespace] as recognized by the client.
-//
-// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
-func AzureResourceProviderNamespace(val string) attribute.KeyValue {
- return AzureResourceProviderNamespaceKey.String(val)
-}
-
-// AzureServiceRequestID returns an attribute KeyValue conforming to the
-// "azure.service.request.id" semantic conventions. It represents the unique
-// identifier of the service request. It's generated by the Azure service and
-// returned with the response.
-func AzureServiceRequestID(val string) attribute.KeyValue {
- return AzureServiceRequestIDKey.String(val)
-}
-
-// Enum values for azure.cosmosdb.connection.mode
-var (
- // Gateway (HTTP) connection.
- // Stability: development
- AzureCosmosDBConnectionModeGateway = AzureCosmosDBConnectionModeKey.String("gateway")
- // Direct connection.
- // Stability: development
- AzureCosmosDBConnectionModeDirect = AzureCosmosDBConnectionModeKey.String("direct")
-)
-
-// Enum values for azure.cosmosdb.consistency.level
-var (
- // Strong
- // Stability: development
- AzureCosmosDBConsistencyLevelStrong = AzureCosmosDBConsistencyLevelKey.String("Strong")
- // Bounded Staleness
- // Stability: development
- AzureCosmosDBConsistencyLevelBoundedStaleness = AzureCosmosDBConsistencyLevelKey.String("BoundedStaleness")
- // Session
- // Stability: development
- AzureCosmosDBConsistencyLevelSession = AzureCosmosDBConsistencyLevelKey.String("Session")
- // Eventual
- // Stability: development
- AzureCosmosDBConsistencyLevelEventual = AzureCosmosDBConsistencyLevelKey.String("Eventual")
- // Consistent Prefix
- // Stability: development
- AzureCosmosDBConsistencyLevelConsistentPrefix = AzureCosmosDBConsistencyLevelKey.String("ConsistentPrefix")
-)
-
-// Namespace: browser
-const (
- // BrowserBrandsKey is the attribute Key conforming to the "browser.brands"
- // semantic conventions. It represents the array of brand name and version
- // separated by a space.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: " Not A;Brand 99", "Chromium 99", "Chrome 99"
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.brands`).
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- BrowserBrandsKey = attribute.Key("browser.brands")
-
- // BrowserLanguageKey is the attribute Key conforming to the "browser.language"
- // semantic conventions. It represents the preferred language of the user using
- // the browser.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "en", "en-US", "fr", "fr-FR"
- // Note: This value is intended to be taken from the Navigator API
- // `navigator.language`.
- BrowserLanguageKey = attribute.Key("browser.language")
-
- // BrowserMobileKey is the attribute Key conforming to the "browser.mobile"
- // semantic conventions. It represents a boolean that is true if the browser is
- // running on a mobile device.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be
- // left unset.
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- BrowserMobileKey = attribute.Key("browser.mobile")
-
- // BrowserPlatformKey is the attribute Key conforming to the "browser.platform"
- // semantic conventions. It represents the platform on which the browser is
- // running.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Windows", "macOS", "Android"
- // Note: This value is intended to be taken from the [UA client hints API] (
- // `navigator.userAgentData.platform`). If unavailable, the legacy
- // `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD
- // be left unset in order for the values to be consistent.
- // The list of possible values is defined in the
- // [W3C User-Agent Client Hints specification]. Note that some (but not all) of
- // these values can overlap with values in the
- // [`os.type` and `os.name` attributes]. However, for consistency, the values in
- // the `browser.platform` attribute should capture the exact value that the user
- // agent provides.
- //
- // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface
- // [W3C User-Agent Client Hints specification]: https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform
- // [`os.type` and `os.name` attributes]: ./os.md
- BrowserPlatformKey = attribute.Key("browser.platform")
-)
-
-// BrowserBrands returns an attribute KeyValue conforming to the "browser.brands"
-// semantic conventions. It represents the array of brand name and version
-// separated by a space.
-func BrowserBrands(val ...string) attribute.KeyValue {
- return BrowserBrandsKey.StringSlice(val)
-}
-
-// BrowserLanguage returns an attribute KeyValue conforming to the
-// "browser.language" semantic conventions. It represents the preferred language
-// of the user using the browser.
-func BrowserLanguage(val string) attribute.KeyValue {
- return BrowserLanguageKey.String(val)
-}
-
-// BrowserMobile returns an attribute KeyValue conforming to the "browser.mobile"
-// semantic conventions. It represents a boolean that is true if the browser is
-// running on a mobile device.
-func BrowserMobile(val bool) attribute.KeyValue {
- return BrowserMobileKey.Bool(val)
-}
-
-// BrowserPlatform returns an attribute KeyValue conforming to the
-// "browser.platform" semantic conventions. It represents the platform on which
-// the browser is running.
-func BrowserPlatform(val string) attribute.KeyValue {
- return BrowserPlatformKey.String(val)
-}
-
-// Namespace: cassandra
-const (
- // CassandraConsistencyLevelKey is the attribute Key conforming to the
- // "cassandra.consistency.level" semantic conventions. It represents the
- // consistency level of the query. Based on consistency values from [CQL].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [CQL]: https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html
- CassandraConsistencyLevelKey = attribute.Key("cassandra.consistency.level")
-
- // CassandraCoordinatorDCKey is the attribute Key conforming to the
- // "cassandra.coordinator.dc" semantic conventions. It represents the data
- // center of the coordinating node for a query.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: us-west-2
- CassandraCoordinatorDCKey = attribute.Key("cassandra.coordinator.dc")
-
- // CassandraCoordinatorIDKey is the attribute Key conforming to the
- // "cassandra.coordinator.id" semantic conventions. It represents the ID of the
- // coordinating node for a query.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: be13faa2-8574-4d71-926d-27f16cf8a7af
- CassandraCoordinatorIDKey = attribute.Key("cassandra.coordinator.id")
-
- // CassandraPageSizeKey is the attribute Key conforming to the
- // "cassandra.page.size" semantic conventions. It represents the fetch size used
- // for paging, i.e. how many rows will be returned at once.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 5000
- CassandraPageSizeKey = attribute.Key("cassandra.page.size")
-
- // CassandraQueryIdempotentKey is the attribute Key conforming to the
- // "cassandra.query.idempotent" semantic conventions. It represents the whether
- // or not the query is idempotent.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- CassandraQueryIdempotentKey = attribute.Key("cassandra.query.idempotent")
-
- // CassandraSpeculativeExecutionCountKey is the attribute Key conforming to the
- // "cassandra.speculative_execution.count" semantic conventions. It represents
- // the number of times a query was speculatively executed. Not set or `0` if the
- // query was not executed speculatively.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 2
- CassandraSpeculativeExecutionCountKey = attribute.Key("cassandra.speculative_execution.count")
-)
-
-// CassandraCoordinatorDC returns an attribute KeyValue conforming to the
-// "cassandra.coordinator.dc" semantic conventions. It represents the data center
-// of the coordinating node for a query.
-func CassandraCoordinatorDC(val string) attribute.KeyValue {
- return CassandraCoordinatorDCKey.String(val)
-}
-
-// CassandraCoordinatorID returns an attribute KeyValue conforming to the
-// "cassandra.coordinator.id" semantic conventions. It represents the ID of the
-// coordinating node for a query.
-func CassandraCoordinatorID(val string) attribute.KeyValue {
- return CassandraCoordinatorIDKey.String(val)
-}
-
-// CassandraPageSize returns an attribute KeyValue conforming to the
-// "cassandra.page.size" semantic conventions. It represents the fetch size used
-// for paging, i.e. how many rows will be returned at once.
-func CassandraPageSize(val int) attribute.KeyValue {
- return CassandraPageSizeKey.Int(val)
-}
-
-// CassandraQueryIdempotent returns an attribute KeyValue conforming to the
-// "cassandra.query.idempotent" semantic conventions. It represents the whether
-// or not the query is idempotent.
-func CassandraQueryIdempotent(val bool) attribute.KeyValue {
- return CassandraQueryIdempotentKey.Bool(val)
-}
-
-// CassandraSpeculativeExecutionCount returns an attribute KeyValue conforming to
-// the "cassandra.speculative_execution.count" semantic conventions. It
-// represents the number of times a query was speculatively executed. Not set or
-// `0` if the query was not executed speculatively.
-func CassandraSpeculativeExecutionCount(val int) attribute.KeyValue {
- return CassandraSpeculativeExecutionCountKey.Int(val)
-}
-
-// Enum values for cassandra.consistency.level
-var (
- // All
- // Stability: development
- CassandraConsistencyLevelAll = CassandraConsistencyLevelKey.String("all")
- // Each Quorum
- // Stability: development
- CassandraConsistencyLevelEachQuorum = CassandraConsistencyLevelKey.String("each_quorum")
- // Quorum
- // Stability: development
- CassandraConsistencyLevelQuorum = CassandraConsistencyLevelKey.String("quorum")
- // Local Quorum
- // Stability: development
- CassandraConsistencyLevelLocalQuorum = CassandraConsistencyLevelKey.String("local_quorum")
- // One
- // Stability: development
- CassandraConsistencyLevelOne = CassandraConsistencyLevelKey.String("one")
- // Two
- // Stability: development
- CassandraConsistencyLevelTwo = CassandraConsistencyLevelKey.String("two")
- // Three
- // Stability: development
- CassandraConsistencyLevelThree = CassandraConsistencyLevelKey.String("three")
- // Local One
- // Stability: development
- CassandraConsistencyLevelLocalOne = CassandraConsistencyLevelKey.String("local_one")
- // Any
- // Stability: development
- CassandraConsistencyLevelAny = CassandraConsistencyLevelKey.String("any")
- // Serial
- // Stability: development
- CassandraConsistencyLevelSerial = CassandraConsistencyLevelKey.String("serial")
- // Local Serial
- // Stability: development
- CassandraConsistencyLevelLocalSerial = CassandraConsistencyLevelKey.String("local_serial")
-)
-
-// Namespace: cicd
-const (
- // CICDPipelineActionNameKey is the attribute Key conforming to the
- // "cicd.pipeline.action.name" semantic conventions. It represents the kind of
- // action a pipeline run is performing.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "BUILD", "RUN", "SYNC"
- CICDPipelineActionNameKey = attribute.Key("cicd.pipeline.action.name")
-
- // CICDPipelineNameKey is the attribute Key conforming to the
- // "cicd.pipeline.name" semantic conventions. It represents the human readable
- // name of the pipeline within a CI/CD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Build and Test", "Lint", "Deploy Go Project",
- // "deploy_to_environment"
- CICDPipelineNameKey = attribute.Key("cicd.pipeline.name")
-
- // CICDPipelineResultKey is the attribute Key conforming to the
- // "cicd.pipeline.result" semantic conventions. It represents the result of a
- // pipeline run.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "success", "failure", "timeout", "skipped"
- CICDPipelineResultKey = attribute.Key("cicd.pipeline.result")
-
- // CICDPipelineRunIDKey is the attribute Key conforming to the
- // "cicd.pipeline.run.id" semantic conventions. It represents the unique
- // identifier of a pipeline run within a CI/CD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "120912"
- CICDPipelineRunIDKey = attribute.Key("cicd.pipeline.run.id")
-
- // CICDPipelineRunStateKey is the attribute Key conforming to the
- // "cicd.pipeline.run.state" semantic conventions. It represents the pipeline
- // run goes through these states during its lifecycle.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pending", "executing", "finalizing"
- CICDPipelineRunStateKey = attribute.Key("cicd.pipeline.run.state")
-
- // CICDPipelineRunURLFullKey is the attribute Key conforming to the
- // "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of
- // the pipeline run, providing the complete address in order to locate and
- // identify the pipeline run.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075"
- //
- // [URL]: https://wikipedia.org/wiki/URL
- CICDPipelineRunURLFullKey = attribute.Key("cicd.pipeline.run.url.full")
-
- // CICDPipelineTaskNameKey is the attribute Key conforming to the
- // "cicd.pipeline.task.name" semantic conventions. It represents the human
- // readable name of a task within a pipeline. Task here most closely aligns with
- // a [computing process] in a pipeline. Other terms for tasks include commands,
- // steps, and procedures.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Run GoLang Linter", "Go Build", "go-test", "deploy_binary"
- //
- // [computing process]: https://wikipedia.org/wiki/Pipeline_(computing)
- CICDPipelineTaskNameKey = attribute.Key("cicd.pipeline.task.name")
-
- // CICDPipelineTaskRunIDKey is the attribute Key conforming to the
- // "cicd.pipeline.task.run.id" semantic conventions. It represents the unique
- // identifier of a task run within a pipeline.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "12097"
- // Note: For a given pipeline run and task, the `cicd.pipeline.task.run.id` MUST
- // be unique within that run. For the same task across different runs of the
- // same pipeline, the `cicd.pipeline.task.run.id` MAY remain the same, enabling
- // correlation of `cicd.pipeline.task.run.result` values across multiple
- // pipeline runs.
- CICDPipelineTaskRunIDKey = attribute.Key("cicd.pipeline.task.run.id")
-
- // CICDPipelineTaskRunResultKey is the attribute Key conforming to the
- // "cicd.pipeline.task.run.result" semantic conventions. It represents the
- // result of a task run.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "success", "failure", "timeout", "skipped"
- CICDPipelineTaskRunResultKey = attribute.Key("cicd.pipeline.task.run.result")
-
- // CICDPipelineTaskRunURLFullKey is the attribute Key conforming to the
- // "cicd.pipeline.task.run.url.full" semantic conventions. It represents the
- // [URL] of the pipeline task run, providing the complete address in order to
- // locate and identify the pipeline task run.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075"
- //
- // [URL]: https://wikipedia.org/wiki/URL
- CICDPipelineTaskRunURLFullKey = attribute.Key("cicd.pipeline.task.run.url.full")
-
- // CICDPipelineTaskTypeKey is the attribute Key conforming to the
- // "cicd.pipeline.task.type" semantic conventions. It represents the type of the
- // task within a pipeline.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "build", "test", "deploy"
- CICDPipelineTaskTypeKey = attribute.Key("cicd.pipeline.task.type")
-
- // CICDSystemComponentKey is the attribute Key conforming to the
- // "cicd.system.component" semantic conventions. It represents the name of a
- // component of the CICD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "controller", "scheduler", "agent"
- CICDSystemComponentKey = attribute.Key("cicd.system.component")
-
- // CICDWorkerIDKey is the attribute Key conforming to the "cicd.worker.id"
- // semantic conventions. It represents the unique identifier of a worker within
- // a CICD system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "abc123", "10.0.1.2", "controller"
- CICDWorkerIDKey = attribute.Key("cicd.worker.id")
-
- // CICDWorkerNameKey is the attribute Key conforming to the "cicd.worker.name"
- // semantic conventions. It represents the name of a worker within a CICD
- // system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "agent-abc", "controller", "Ubuntu LTS"
- CICDWorkerNameKey = attribute.Key("cicd.worker.name")
-
- // CICDWorkerStateKey is the attribute Key conforming to the "cicd.worker.state"
- // semantic conventions. It represents the state of a CICD worker / agent.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "idle", "busy", "down"
- CICDWorkerStateKey = attribute.Key("cicd.worker.state")
-
- // CICDWorkerURLFullKey is the attribute Key conforming to the
- // "cicd.worker.url.full" semantic conventions. It represents the [URL] of the
- // worker, providing the complete address in order to locate and identify the
- // worker.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://cicd.example.org/worker/abc123"
- //
- // [URL]: https://wikipedia.org/wiki/URL
- CICDWorkerURLFullKey = attribute.Key("cicd.worker.url.full")
-)
-
-// CICDPipelineName returns an attribute KeyValue conforming to the
-// "cicd.pipeline.name" semantic conventions. It represents the human readable
-// name of the pipeline within a CI/CD system.
-func CICDPipelineName(val string) attribute.KeyValue {
- return CICDPipelineNameKey.String(val)
-}
-
-// CICDPipelineRunID returns an attribute KeyValue conforming to the
-// "cicd.pipeline.run.id" semantic conventions. It represents the unique
-// identifier of a pipeline run within a CI/CD system.
-func CICDPipelineRunID(val string) attribute.KeyValue {
- return CICDPipelineRunIDKey.String(val)
-}
-
-// CICDPipelineRunURLFull returns an attribute KeyValue conforming to the
-// "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of
-// the pipeline run, providing the complete address in order to locate and
-// identify the pipeline run.
-//
-// [URL]: https://wikipedia.org/wiki/URL
-func CICDPipelineRunURLFull(val string) attribute.KeyValue {
- return CICDPipelineRunURLFullKey.String(val)
-}
-
-// CICDPipelineTaskName returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.name" semantic conventions. It represents the human
-// readable name of a task within a pipeline. Task here most closely aligns with
-// a [computing process] in a pipeline. Other terms for tasks include commands,
-// steps, and procedures.
-//
-// [computing process]: https://wikipedia.org/wiki/Pipeline_(computing)
-func CICDPipelineTaskName(val string) attribute.KeyValue {
- return CICDPipelineTaskNameKey.String(val)
-}
-
-// CICDPipelineTaskRunID returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.run.id" semantic conventions. It represents the unique
-// identifier of a task run within a pipeline.
-func CICDPipelineTaskRunID(val string) attribute.KeyValue {
- return CICDPipelineTaskRunIDKey.String(val)
-}
-
-// CICDPipelineTaskRunURLFull returns an attribute KeyValue conforming to the
-// "cicd.pipeline.task.run.url.full" semantic conventions. It represents the
-// [URL] of the pipeline task run, providing the complete address in order to
-// locate and identify the pipeline task run.
-//
-// [URL]: https://wikipedia.org/wiki/URL
-func CICDPipelineTaskRunURLFull(val string) attribute.KeyValue {
- return CICDPipelineTaskRunURLFullKey.String(val)
-}
-
-// CICDSystemComponent returns an attribute KeyValue conforming to the
-// "cicd.system.component" semantic conventions. It represents the name of a
-// component of the CICD system.
-func CICDSystemComponent(val string) attribute.KeyValue {
- return CICDSystemComponentKey.String(val)
-}
-
-// CICDWorkerID returns an attribute KeyValue conforming to the "cicd.worker.id"
-// semantic conventions. It represents the unique identifier of a worker within a
-// CICD system.
-func CICDWorkerID(val string) attribute.KeyValue {
- return CICDWorkerIDKey.String(val)
-}
-
-// CICDWorkerName returns an attribute KeyValue conforming to the
-// "cicd.worker.name" semantic conventions. It represents the name of a worker
-// within a CICD system.
-func CICDWorkerName(val string) attribute.KeyValue {
- return CICDWorkerNameKey.String(val)
-}
-
-// CICDWorkerURLFull returns an attribute KeyValue conforming to the
-// "cicd.worker.url.full" semantic conventions. It represents the [URL] of the
-// worker, providing the complete address in order to locate and identify the
-// worker.
-//
-// [URL]: https://wikipedia.org/wiki/URL
-func CICDWorkerURLFull(val string) attribute.KeyValue {
- return CICDWorkerURLFullKey.String(val)
-}
-
-// Enum values for cicd.pipeline.action.name
-var (
- // The pipeline run is executing a build.
- // Stability: development
- CICDPipelineActionNameBuild = CICDPipelineActionNameKey.String("BUILD")
- // The pipeline run is executing.
- // Stability: development
- CICDPipelineActionNameRun = CICDPipelineActionNameKey.String("RUN")
- // The pipeline run is executing a sync.
- // Stability: development
- CICDPipelineActionNameSync = CICDPipelineActionNameKey.String("SYNC")
-)
-
-// Enum values for cicd.pipeline.result
-var (
- // The pipeline run finished successfully.
- // Stability: development
- CICDPipelineResultSuccess = CICDPipelineResultKey.String("success")
- // The pipeline run did not finish successfully, eg. due to a compile error or a
- // failing test. Such failures are usually detected by non-zero exit codes of
- // the tools executed in the pipeline run.
- // Stability: development
- CICDPipelineResultFailure = CICDPipelineResultKey.String("failure")
- // The pipeline run failed due to an error in the CICD system, eg. due to the
- // worker being killed.
- // Stability: development
- CICDPipelineResultError = CICDPipelineResultKey.String("error")
- // A timeout caused the pipeline run to be interrupted.
- // Stability: development
- CICDPipelineResultTimeout = CICDPipelineResultKey.String("timeout")
- // The pipeline run was cancelled, eg. by a user manually cancelling the
- // pipeline run.
- // Stability: development
- CICDPipelineResultCancellation = CICDPipelineResultKey.String("cancellation")
- // The pipeline run was skipped, eg. due to a precondition not being met.
- // Stability: development
- CICDPipelineResultSkip = CICDPipelineResultKey.String("skip")
-)
-
-// Enum values for cicd.pipeline.run.state
-var (
- // The run pending state spans from the event triggering the pipeline run until
- // the execution of the run starts (eg. time spent in a queue, provisioning
- // agents, creating run resources).
- //
- // Stability: development
- CICDPipelineRunStatePending = CICDPipelineRunStateKey.String("pending")
- // The executing state spans the execution of any run tasks (eg. build, test).
- // Stability: development
- CICDPipelineRunStateExecuting = CICDPipelineRunStateKey.String("executing")
- // The finalizing state spans from when the run has finished executing (eg.
- // cleanup of run resources).
- // Stability: development
- CICDPipelineRunStateFinalizing = CICDPipelineRunStateKey.String("finalizing")
-)
-
-// Enum values for cicd.pipeline.task.run.result
-var (
- // The task run finished successfully.
- // Stability: development
- CICDPipelineTaskRunResultSuccess = CICDPipelineTaskRunResultKey.String("success")
- // The task run did not finish successfully, eg. due to a compile error or a
- // failing test. Such failures are usually detected by non-zero exit codes of
- // the tools executed in the task run.
- // Stability: development
- CICDPipelineTaskRunResultFailure = CICDPipelineTaskRunResultKey.String("failure")
- // The task run failed due to an error in the CICD system, eg. due to the worker
- // being killed.
- // Stability: development
- CICDPipelineTaskRunResultError = CICDPipelineTaskRunResultKey.String("error")
- // A timeout caused the task run to be interrupted.
- // Stability: development
- CICDPipelineTaskRunResultTimeout = CICDPipelineTaskRunResultKey.String("timeout")
- // The task run was cancelled, eg. by a user manually cancelling the task run.
- // Stability: development
- CICDPipelineTaskRunResultCancellation = CICDPipelineTaskRunResultKey.String("cancellation")
- // The task run was skipped, eg. due to a precondition not being met.
- // Stability: development
- CICDPipelineTaskRunResultSkip = CICDPipelineTaskRunResultKey.String("skip")
-)
-
-// Enum values for cicd.pipeline.task.type
-var (
- // build
- // Stability: development
- CICDPipelineTaskTypeBuild = CICDPipelineTaskTypeKey.String("build")
- // test
- // Stability: development
- CICDPipelineTaskTypeTest = CICDPipelineTaskTypeKey.String("test")
- // deploy
- // Stability: development
- CICDPipelineTaskTypeDeploy = CICDPipelineTaskTypeKey.String("deploy")
-)
-
-// Enum values for cicd.worker.state
-var (
- // The worker is not performing work for the CICD system. It is available to the
- // CICD system to perform work on (online / idle).
- // Stability: development
- CICDWorkerStateAvailable = CICDWorkerStateKey.String("available")
- // The worker is performing work for the CICD system.
- // Stability: development
- CICDWorkerStateBusy = CICDWorkerStateKey.String("busy")
- // The worker is not available to the CICD system (disconnected / down).
- // Stability: development
- CICDWorkerStateOffline = CICDWorkerStateKey.String("offline")
-)
-
-// Namespace: client
-const (
- // ClientAddressKey is the attribute Key conforming to the "client.address"
- // semantic conventions. It represents the client address - domain name if
- // available without reverse DNS lookup; otherwise, IP address or Unix domain
- // socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "client.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the server side, and when communicating through an
- // intermediary, `client.address` SHOULD represent the client address behind any
- // intermediaries, for example proxies, if it's available.
- ClientAddressKey = attribute.Key("client.address")
-
- // ClientPortKey is the attribute Key conforming to the "client.port" semantic
- // conventions. It represents the client port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- // Note: When observed from the server side, and when communicating through an
- // intermediary, `client.port` SHOULD represent the client port behind any
- // intermediaries, for example proxies, if it's available.
- ClientPortKey = attribute.Key("client.port")
-)
-
-// ClientAddress returns an attribute KeyValue conforming to the "client.address"
-// semantic conventions. It represents the client address - domain name if
-// available without reverse DNS lookup; otherwise, IP address or Unix domain
-// socket name.
-func ClientAddress(val string) attribute.KeyValue {
- return ClientAddressKey.String(val)
-}
-
-// ClientPort returns an attribute KeyValue conforming to the "client.port"
-// semantic conventions. It represents the client port number.
-func ClientPort(val int) attribute.KeyValue {
- return ClientPortKey.Int(val)
-}
-
-// Namespace: cloud
-const (
- // CloudAccountIDKey is the attribute Key conforming to the "cloud.account.id"
- // semantic conventions. It represents the cloud account ID the resource is
- // assigned to.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "111111111111", "opentelemetry"
- CloudAccountIDKey = attribute.Key("cloud.account.id")
-
- // CloudAvailabilityZoneKey is the attribute Key conforming to the
- // "cloud.availability_zone" semantic conventions. It represents the cloud
- // regions often have multiple, isolated locations known as zones to increase
- // availability. Availability zone represents the zone where the resource is
- // running.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-east-1c"
- // Note: Availability zones are called "zones" on Alibaba Cloud and Google
- // Cloud.
- CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone")
-
- // CloudPlatformKey is the attribute Key conforming to the "cloud.platform"
- // semantic conventions. It represents the cloud platform in use.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The prefix of the service SHOULD match the one specified in
- // `cloud.provider`.
- CloudPlatformKey = attribute.Key("cloud.platform")
-
- // CloudProviderKey is the attribute Key conforming to the "cloud.provider"
- // semantic conventions. It represents the name of the cloud provider.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- CloudProviderKey = attribute.Key("cloud.provider")
-
- // CloudRegionKey is the attribute Key conforming to the "cloud.region" semantic
- // conventions. It represents the geographical region within a cloud provider.
- // When associated with a resource, this attribute specifies the region where
- // the resource operates. When calling services or APIs deployed on a cloud,
- // this attribute identifies the region where the called destination is
- // deployed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1", "us-east-1"
- // Note: Refer to your provider's docs to see the available regions, for example
- // [Alibaba Cloud regions], [AWS regions], [Azure regions],
- // [Google Cloud regions], or [Tencent Cloud regions].
- //
- // [Alibaba Cloud regions]: https://www.alibabacloud.com/help/doc-detail/40654.htm
- // [AWS regions]: https://aws.amazon.com/about-aws/global-infrastructure/regions_az/
- // [Azure regions]: https://azure.microsoft.com/global-infrastructure/geographies/
- // [Google Cloud regions]: https://cloud.google.com/about/locations
- // [Tencent Cloud regions]: https://www.tencentcloud.com/document/product/213/6091
- CloudRegionKey = attribute.Key("cloud.region")
-
- // CloudResourceIDKey is the attribute Key conforming to the "cloud.resource_id"
- // semantic conventions. It represents the cloud provider-specific native
- // identifier of the monitored cloud resource (e.g. an [ARN] on AWS, a
- // [fully qualified resource ID] on Azure, a [full resource name] on GCP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function",
- // "//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID",
- // "/subscriptions//resourceGroups/
- // /providers/Microsoft.Web/sites//functions/"
- // Note: On some cloud providers, it may not be possible to determine the full
- // ID at startup,
- // so it may be necessary to set `cloud.resource_id` as a span attribute
- // instead.
- //
- // The exact value to use for `cloud.resource_id` depends on the cloud provider.
- // The following well-known definitions MUST be used if you set this attribute
- // and they apply:
- //
- // - **AWS Lambda:** The function [ARN].
- // Take care not to use the "invoked ARN" directly but replace any
- // [alias suffix]
- // with the resolved function version, as the same runtime instance may be
- // invocable with
- // multiple different aliases.
- // - **GCP:** The [URI of the resource]
- // - **Azure:** The [Fully Qualified Resource ID] of the invoked function,
- // *not* the function app, having the form
- //
- // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/`
- // .
- // This means that a span attribute MUST be used, as an Azure function app
- // can host multiple functions that would usually share
- // a TracerProvider.
- //
- //
- // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
- // [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
- // [full resource name]: https://google.aip.dev/122#full-resource-names
- // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
- // [alias suffix]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html
- // [URI of the resource]: https://cloud.google.com/iam/docs/full-resource-names
- // [Fully Qualified Resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
- CloudResourceIDKey = attribute.Key("cloud.resource_id")
-)
-
-// CloudAccountID returns an attribute KeyValue conforming to the
-// "cloud.account.id" semantic conventions. It represents the cloud account ID
-// the resource is assigned to.
-func CloudAccountID(val string) attribute.KeyValue {
- return CloudAccountIDKey.String(val)
-}
-
-// CloudAvailabilityZone returns an attribute KeyValue conforming to the
-// "cloud.availability_zone" semantic conventions. It represents the cloud
-// regions often have multiple, isolated locations known as zones to increase
-// availability. Availability zone represents the zone where the resource is
-// running.
-func CloudAvailabilityZone(val string) attribute.KeyValue {
- return CloudAvailabilityZoneKey.String(val)
-}
-
-// CloudRegion returns an attribute KeyValue conforming to the "cloud.region"
-// semantic conventions. It represents the geographical region within a cloud
-// provider. When associated with a resource, this attribute specifies the region
-// where the resource operates. When calling services or APIs deployed on a
-// cloud, this attribute identifies the region where the called destination is
-// deployed.
-func CloudRegion(val string) attribute.KeyValue {
- return CloudRegionKey.String(val)
-}
-
-// CloudResourceID returns an attribute KeyValue conforming to the
-// "cloud.resource_id" semantic conventions. It represents the cloud
-// provider-specific native identifier of the monitored cloud resource (e.g. an
-// [ARN] on AWS, a [fully qualified resource ID] on Azure, a [full resource name]
-//
-// on GCP).
-//
-// [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
-// [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
-// [full resource name]: https://google.aip.dev/122#full-resource-names
-func CloudResourceID(val string) attribute.KeyValue {
- return CloudResourceIDKey.String(val)
-}
-
-// Enum values for cloud.platform
-var (
- // Akamai Cloud Compute
- // Stability: development
- CloudPlatformAkamaiCloudCompute = CloudPlatformKey.String("akamai_cloud.compute")
- // Alibaba Cloud Elastic Compute Service
- // Stability: development
- CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs")
- // Alibaba Cloud Function Compute
- // Stability: development
- CloudPlatformAlibabaCloudFC = CloudPlatformKey.String("alibaba_cloud_fc")
- // Red Hat OpenShift on Alibaba Cloud
- // Stability: development
- CloudPlatformAlibabaCloudOpenShift = CloudPlatformKey.String("alibaba_cloud_openshift")
- // AWS Elastic Compute Cloud
- // Stability: development
- CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2")
- // AWS Elastic Container Service
- // Stability: development
- CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs")
- // AWS Elastic Kubernetes Service
- // Stability: development
- CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks")
- // AWS Lambda
- // Stability: development
- CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda")
- // AWS Elastic Beanstalk
- // Stability: development
- CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk")
- // AWS App Runner
- // Stability: development
- CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner")
- // Red Hat OpenShift on AWS (ROSA)
- // Stability: development
- CloudPlatformAWSOpenShift = CloudPlatformKey.String("aws_openshift")
- // Azure Virtual Machines
- // Stability: development
- CloudPlatformAzureVM = CloudPlatformKey.String("azure.vm")
- // Azure Container Apps
- // Stability: development
- CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure.container_apps")
- // Azure Container Instances
- // Stability: development
- CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure.container_instances")
- // Azure Kubernetes Service
- // Stability: development
- CloudPlatformAzureAKS = CloudPlatformKey.String("azure.aks")
- // Azure Functions
- // Stability: development
- CloudPlatformAzureFunctions = CloudPlatformKey.String("azure.functions")
- // Azure App Service
- // Stability: development
- CloudPlatformAzureAppService = CloudPlatformKey.String("azure.app_service")
- // Azure Red Hat OpenShift
- // Stability: development
- CloudPlatformAzureOpenShift = CloudPlatformKey.String("azure.openshift")
- // Google Vertex AI Agent Engine
- // Stability: development
- CloudPlatformGCPAgentEngine = CloudPlatformKey.String("gcp.agent_engine")
- // Google Bare Metal Solution (BMS)
- // Stability: development
- CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution")
- // Google Cloud Compute Engine (GCE)
- // Stability: development
- CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine")
- // Google Cloud Run
- // Stability: development
- CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run")
- // Google Cloud Kubernetes Engine (GKE)
- // Stability: development
- CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine")
- // Google Cloud Functions (GCF)
- // Stability: development
- CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions")
- // Google Cloud App Engine (GAE)
- // Stability: development
- CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine")
- // Red Hat OpenShift on Google Cloud
- // Stability: development
- CloudPlatformGCPOpenShift = CloudPlatformKey.String("gcp_openshift")
- // Server on Hetzner Cloud
- // Stability: development
- CloudPlatformHetznerCloudServer = CloudPlatformKey.String("hetzner.cloud_server")
- // Red Hat OpenShift on IBM Cloud
- // Stability: development
- CloudPlatformIBMCloudOpenShift = CloudPlatformKey.String("ibm_cloud_openshift")
- // Compute on Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudPlatformOracleCloudCompute = CloudPlatformKey.String("oracle_cloud_compute")
- // Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudPlatformOracleCloudOKE = CloudPlatformKey.String("oracle_cloud_oke")
- // Tencent Cloud Cloud Virtual Machine (CVM)
- // Stability: development
- CloudPlatformTencentCloudCVM = CloudPlatformKey.String("tencent_cloud_cvm")
- // Tencent Cloud Elastic Kubernetes Service (EKS)
- // Stability: development
- CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks")
- // Tencent Cloud Serverless Cloud Function (SCF)
- // Stability: development
- CloudPlatformTencentCloudSCF = CloudPlatformKey.String("tencent_cloud_scf")
- // Vultr Cloud Compute
- // Stability: development
- CloudPlatformVultrCloudCompute = CloudPlatformKey.String("vultr.cloud_compute")
-)
-
-// Enum values for cloud.provider
-var (
- // Akamai Cloud
- // Stability: development
- CloudProviderAkamaiCloud = CloudProviderKey.String("akamai_cloud")
- // Alibaba Cloud
- // Stability: development
- CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud")
- // Amazon Web Services
- // Stability: development
- CloudProviderAWS = CloudProviderKey.String("aws")
- // Microsoft Azure
- // Stability: development
- CloudProviderAzure = CloudProviderKey.String("azure")
- // Google Cloud Platform
- // Stability: development
- CloudProviderGCP = CloudProviderKey.String("gcp")
- // Heroku Platform as a Service
- // Stability: development
- CloudProviderHeroku = CloudProviderKey.String("heroku")
- // Hetzner
- // Stability: development
- CloudProviderHetzner = CloudProviderKey.String("hetzner")
- // IBM Cloud
- // Stability: development
- CloudProviderIBMCloud = CloudProviderKey.String("ibm_cloud")
- // Oracle Cloud Infrastructure (OCI)
- // Stability: development
- CloudProviderOracleCloud = CloudProviderKey.String("oracle_cloud")
- // Tencent Cloud
- // Stability: development
- CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud")
- // Vultr
- // Stability: development
- CloudProviderVultr = CloudProviderKey.String("vultr")
-)
-
-// Namespace: cloudevents
-const (
- // CloudEventsEventIDKey is the attribute Key conforming to the
- // "cloudevents.event_id" semantic conventions. It represents the [event_id]
- // uniquely identifies the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123e4567-e89b-12d3-a456-426614174000", "0001"
- //
- // [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id
- CloudEventsEventIDKey = attribute.Key("cloudevents.event_id")
-
- // CloudEventsEventSourceKey is the attribute Key conforming to the
- // "cloudevents.event_source" semantic conventions. It represents the [source]
- // identifies the context in which an event happened.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://github.com/cloudevents", "/cloudevents/spec/pull/123",
- // "my-service"
- //
- // [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1
- CloudEventsEventSourceKey = attribute.Key("cloudevents.event_source")
-
- // CloudEventsEventSpecVersionKey is the attribute Key conforming to the
- // "cloudevents.event_spec_version" semantic conventions. It represents the
- // [version of the CloudEvents specification] which the event uses.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- //
- // [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion
- CloudEventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version")
-
- // CloudEventsEventSubjectKey is the attribute Key conforming to the
- // "cloudevents.event_subject" semantic conventions. It represents the [subject]
- // of the event in the context of the event producer (identified by source).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: mynewfile.jpg
- //
- // [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject
- CloudEventsEventSubjectKey = attribute.Key("cloudevents.event_subject")
-
- // CloudEventsEventTypeKey is the attribute Key conforming to the
- // "cloudevents.event_type" semantic conventions. It represents the [event_type]
- // contains a value describing the type of event related to the originating
- // occurrence.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "com.github.pull_request.opened", "com.example.object.deleted.v2"
- //
- // [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type
- CloudEventsEventTypeKey = attribute.Key("cloudevents.event_type")
-)
-
-// CloudEventsEventID returns an attribute KeyValue conforming to the
-// "cloudevents.event_id" semantic conventions. It represents the [event_id]
-// uniquely identifies the event.
-//
-// [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id
-func CloudEventsEventID(val string) attribute.KeyValue {
- return CloudEventsEventIDKey.String(val)
-}
-
-// CloudEventsEventSource returns an attribute KeyValue conforming to the
-// "cloudevents.event_source" semantic conventions. It represents the [source]
-// identifies the context in which an event happened.
-//
-// [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1
-func CloudEventsEventSource(val string) attribute.KeyValue {
- return CloudEventsEventSourceKey.String(val)
-}
-
-// CloudEventsEventSpecVersion returns an attribute KeyValue conforming to the
-// "cloudevents.event_spec_version" semantic conventions. It represents the
-// [version of the CloudEvents specification] which the event uses.
-//
-// [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion
-func CloudEventsEventSpecVersion(val string) attribute.KeyValue {
- return CloudEventsEventSpecVersionKey.String(val)
-}
-
-// CloudEventsEventSubject returns an attribute KeyValue conforming to the
-// "cloudevents.event_subject" semantic conventions. It represents the [subject]
-// of the event in the context of the event producer (identified by source).
-//
-// [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject
-func CloudEventsEventSubject(val string) attribute.KeyValue {
- return CloudEventsEventSubjectKey.String(val)
-}
-
-// CloudEventsEventType returns an attribute KeyValue conforming to the
-// "cloudevents.event_type" semantic conventions. It represents the [event_type]
-// contains a value describing the type of event related to the originating
-// occurrence.
-//
-// [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type
-func CloudEventsEventType(val string) attribute.KeyValue {
- return CloudEventsEventTypeKey.String(val)
-}
-
-// Namespace: cloudfoundry
-const (
- // CloudFoundryAppIDKey is the attribute Key conforming to the
- // "cloudfoundry.app.id" semantic conventions. It represents the guid of the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.application_id`. This is the same value as
- // reported by `cf app --guid`.
- CloudFoundryAppIDKey = attribute.Key("cloudfoundry.app.id")
-
- // CloudFoundryAppInstanceIDKey is the attribute Key conforming to the
- // "cloudfoundry.app.instance.id" semantic conventions. It represents the index
- // of the application instance. 0 when just one instance is active.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0", "1"
- // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope]
- // .
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the application instance index for applications
- // deployed on the runtime.
- //
- // Application instrumentation should use the value from environment
- // variable `CF_INSTANCE_INDEX`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- CloudFoundryAppInstanceIDKey = attribute.Key("cloudfoundry.app.instance.id")
-
- // CloudFoundryAppNameKey is the attribute Key conforming to the
- // "cloudfoundry.app.name" semantic conventions. It represents the name of the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-app-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.application_name`. This is the same value
- // as reported by `cf apps`.
- CloudFoundryAppNameKey = attribute.Key("cloudfoundry.app.name")
-
- // CloudFoundryOrgIDKey is the attribute Key conforming to the
- // "cloudfoundry.org.id" semantic conventions. It represents the guid of the
- // CloudFoundry org the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.org_id`. This is the same value as
- // reported by `cf org --guid`.
- CloudFoundryOrgIDKey = attribute.Key("cloudfoundry.org.id")
-
- // CloudFoundryOrgNameKey is the attribute Key conforming to the
- // "cloudfoundry.org.name" semantic conventions. It represents the name of the
- // CloudFoundry organization the app is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-org-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.org_name`. This is the same value as
- // reported by `cf orgs`.
- CloudFoundryOrgNameKey = attribute.Key("cloudfoundry.org.name")
-
- // CloudFoundryProcessIDKey is the attribute Key conforming to the
- // "cloudfoundry.process.id" semantic conventions. It represents the UID
- // identifying the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to
- // `VCAP_APPLICATION.app_id` for applications deployed to the runtime.
- // For system components, this could be the actual PID.
- CloudFoundryProcessIDKey = attribute.Key("cloudfoundry.process.id")
-
- // CloudFoundryProcessTypeKey is the attribute Key conforming to the
- // "cloudfoundry.process.type" semantic conventions. It represents the type of
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "web"
- // Note: CloudFoundry applications can consist of multiple jobs. Usually the
- // main process will be of type `web`. There can be additional background
- // tasks or side-cars with different process types.
- CloudFoundryProcessTypeKey = attribute.Key("cloudfoundry.process.type")
-
- // CloudFoundrySpaceIDKey is the attribute Key conforming to the
- // "cloudfoundry.space.id" semantic conventions. It represents the guid of the
- // CloudFoundry space the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.space_id`. This is the same value as
- // reported by `cf space --guid`.
- CloudFoundrySpaceIDKey = attribute.Key("cloudfoundry.space.id")
-
- // CloudFoundrySpaceNameKey is the attribute Key conforming to the
- // "cloudfoundry.space.name" semantic conventions. It represents the name of the
- // CloudFoundry space the application is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-space-name"
- // Note: Application instrumentation should use the value from environment
- // variable `VCAP_APPLICATION.space_name`. This is the same value as
- // reported by `cf spaces`.
- CloudFoundrySpaceNameKey = attribute.Key("cloudfoundry.space.name")
-
- // CloudFoundrySystemIDKey is the attribute Key conforming to the
- // "cloudfoundry.system.id" semantic conventions. It represents a guid or
- // another name describing the event source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cf/gorouter"
- // Note: CloudFoundry defines the `source_id` in the [Loggregator v2 envelope].
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the component name, e.g. "gorouter", for
- // CloudFoundry components.
- //
- // When system components are instrumented, values from the
- // [Bosh spec]
- // should be used. The `system.id` should be set to
- // `spec.deployment/spec.name`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec
- CloudFoundrySystemIDKey = attribute.Key("cloudfoundry.system.id")
-
- // CloudFoundrySystemInstanceIDKey is the attribute Key conforming to the
- // "cloudfoundry.system.instance.id" semantic conventions. It represents a guid
- // describing the concrete instance of the event source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope]
- // .
- // It is used for logs and metrics emitted by CloudFoundry. It is
- // supposed to contain the vm id for CloudFoundry components.
- //
- // When system components are instrumented, values from the
- // [Bosh spec]
- // should be used. The `system.instance.id` should be set to `spec.id`.
- //
- // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope
- // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec
- CloudFoundrySystemInstanceIDKey = attribute.Key("cloudfoundry.system.instance.id")
-)
-
-// CloudFoundryAppID returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.id" semantic conventions. It represents the guid of the
-// application.
-func CloudFoundryAppID(val string) attribute.KeyValue {
- return CloudFoundryAppIDKey.String(val)
-}
-
-// CloudFoundryAppInstanceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.instance.id" semantic conventions. It represents the index
-// of the application instance. 0 when just one instance is active.
-func CloudFoundryAppInstanceID(val string) attribute.KeyValue {
- return CloudFoundryAppInstanceIDKey.String(val)
-}
-
-// CloudFoundryAppName returns an attribute KeyValue conforming to the
-// "cloudfoundry.app.name" semantic conventions. It represents the name of the
-// application.
-func CloudFoundryAppName(val string) attribute.KeyValue {
- return CloudFoundryAppNameKey.String(val)
-}
-
-// CloudFoundryOrgID returns an attribute KeyValue conforming to the
-// "cloudfoundry.org.id" semantic conventions. It represents the guid of the
-// CloudFoundry org the application is running in.
-func CloudFoundryOrgID(val string) attribute.KeyValue {
- return CloudFoundryOrgIDKey.String(val)
-}
-
-// CloudFoundryOrgName returns an attribute KeyValue conforming to the
-// "cloudfoundry.org.name" semantic conventions. It represents the name of the
-// CloudFoundry organization the app is running in.
-func CloudFoundryOrgName(val string) attribute.KeyValue {
- return CloudFoundryOrgNameKey.String(val)
-}
-
-// CloudFoundryProcessID returns an attribute KeyValue conforming to the
-// "cloudfoundry.process.id" semantic conventions. It represents the UID
-// identifying the process.
-func CloudFoundryProcessID(val string) attribute.KeyValue {
- return CloudFoundryProcessIDKey.String(val)
-}
-
-// CloudFoundryProcessType returns an attribute KeyValue conforming to the
-// "cloudfoundry.process.type" semantic conventions. It represents the type of
-// process.
-func CloudFoundryProcessType(val string) attribute.KeyValue {
- return CloudFoundryProcessTypeKey.String(val)
-}
-
-// CloudFoundrySpaceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.space.id" semantic conventions. It represents the guid of the
-// CloudFoundry space the application is running in.
-func CloudFoundrySpaceID(val string) attribute.KeyValue {
- return CloudFoundrySpaceIDKey.String(val)
-}
-
-// CloudFoundrySpaceName returns an attribute KeyValue conforming to the
-// "cloudfoundry.space.name" semantic conventions. It represents the name of the
-// CloudFoundry space the application is running in.
-func CloudFoundrySpaceName(val string) attribute.KeyValue {
- return CloudFoundrySpaceNameKey.String(val)
-}
-
-// CloudFoundrySystemID returns an attribute KeyValue conforming to the
-// "cloudfoundry.system.id" semantic conventions. It represents a guid or another
-// name describing the event source.
-func CloudFoundrySystemID(val string) attribute.KeyValue {
- return CloudFoundrySystemIDKey.String(val)
-}
-
-// CloudFoundrySystemInstanceID returns an attribute KeyValue conforming to the
-// "cloudfoundry.system.instance.id" semantic conventions. It represents a guid
-// describing the concrete instance of the event source.
-func CloudFoundrySystemInstanceID(val string) attribute.KeyValue {
- return CloudFoundrySystemInstanceIDKey.String(val)
-}
-
-// Namespace: code
-const (
- // CodeColumnNumberKey is the attribute Key conforming to the
- // "code.column.number" semantic conventions. It represents the column number in
- // `code.file.path` best representing the operation. It SHOULD point within the
- // code unit named in `code.function.name`. This attribute MUST NOT be used on
- // the Profile signal since the data is already captured in 'message Line'. This
- // constraint is imposed to prevent redundancy and maintain data integrity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- CodeColumnNumberKey = attribute.Key("code.column.number")
-
- // CodeFilePathKey is the attribute Key conforming to the "code.file.path"
- // semantic conventions. It represents the source code file name that identifies
- // the code unit as uniquely as possible (preferably an absolute file path).
- // This attribute MUST NOT be used on the Profile signal since the data is
- // already captured in 'message Function'. This constraint is imposed to prevent
- // redundancy and maintain data integrity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: /usr/local/MyApplication/content_root/app/index.php
- CodeFilePathKey = attribute.Key("code.file.path")
-
- // CodeFunctionNameKey is the attribute Key conforming to the
- // "code.function.name" semantic conventions. It represents the method or
- // function fully-qualified name without arguments. The value should fit the
- // natural representation of the language runtime, which is also likely the same
- // used within `code.stacktrace` attribute value. This attribute MUST NOT be
- // used on the Profile signal since the data is already captured in 'message
- // Function'. This constraint is imposed to prevent redundancy and maintain data
- // integrity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "com.example.MyHttpService.serveRequest",
- // "GuzzleHttp\Client::transfer", "fopen"
- // Note: Values and format depends on each language runtime, thus it is
- // impossible to provide an exhaustive list of examples.
- // The values are usually the same (or prefixes of) the ones found in native
- // stack trace representation stored in
- // `code.stacktrace` without information on arguments.
- //
- // Examples:
- //
- // - Java method: `com.example.MyHttpService.serveRequest`
- // - Java anonymous class method: `com.mycompany.Main$1.myMethod`
- // - Java lambda method:
- // `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`
- // - PHP function: `GuzzleHttp\Client::transfer`
- // - Go function: `github.com/my/repo/pkg.foo.func5`
- // - Elixir: `OpenTelemetry.Ctx.new`
- // - Erlang: `opentelemetry_ctx:new`
- // - Rust: `playground::my_module::my_cool_func`
- // - C function: `fopen`
- CodeFunctionNameKey = attribute.Key("code.function.name")
-
- // CodeLineNumberKey is the attribute Key conforming to the "code.line.number"
- // semantic conventions. It represents the line number in `code.file.path` best
- // representing the operation. It SHOULD point within the code unit named in
- // `code.function.name`. This attribute MUST NOT be used on the Profile signal
- // since the data is already captured in 'message Line'. This constraint is
- // imposed to prevent redundancy and maintain data integrity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- CodeLineNumberKey = attribute.Key("code.line.number")
-
- // CodeStacktraceKey is the attribute Key conforming to the "code.stacktrace"
- // semantic conventions. It represents a stacktrace as a string in the natural
- // representation for the language runtime. The representation is identical to
- // [`exception.stacktrace`]. This attribute MUST NOT be used on the Profile
- // signal since the data is already captured in 'message Location'. This
- // constraint is imposed to prevent redundancy and maintain data integrity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at
- // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at
- // com.example.GenerateTrace.main(GenerateTrace.java:5)
- //
- // [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation
- CodeStacktraceKey = attribute.Key("code.stacktrace")
-)
-
-// CodeColumnNumber returns an attribute KeyValue conforming to the
-// "code.column.number" semantic conventions. It represents the column number in
-// `code.file.path` best representing the operation. It SHOULD point within the
-// code unit named in `code.function.name`. This attribute MUST NOT be used on
-// the Profile signal since the data is already captured in 'message Line'. This
-// constraint is imposed to prevent redundancy and maintain data integrity.
-func CodeColumnNumber(val int) attribute.KeyValue {
- return CodeColumnNumberKey.Int(val)
-}
-
-// CodeFilePath returns an attribute KeyValue conforming to the "code.file.path"
-// semantic conventions. It represents the source code file name that identifies
-// the code unit as uniquely as possible (preferably an absolute file path). This
-// attribute MUST NOT be used on the Profile signal since the data is already
-// captured in 'message Function'. This constraint is imposed to prevent
-// redundancy and maintain data integrity.
-func CodeFilePath(val string) attribute.KeyValue {
- return CodeFilePathKey.String(val)
-}
-
-// CodeFunctionName returns an attribute KeyValue conforming to the
-// "code.function.name" semantic conventions. It represents the method or
-// function fully-qualified name without arguments. The value should fit the
-// natural representation of the language runtime, which is also likely the same
-// used within `code.stacktrace` attribute value. This attribute MUST NOT be used
-// on the Profile signal since the data is already captured in 'message
-// Function'. This constraint is imposed to prevent redundancy and maintain data
-// integrity.
-func CodeFunctionName(val string) attribute.KeyValue {
- return CodeFunctionNameKey.String(val)
-}
-
-// CodeLineNumber returns an attribute KeyValue conforming to the
-// "code.line.number" semantic conventions. It represents the line number in
-// `code.file.path` best representing the operation. It SHOULD point within the
-// code unit named in `code.function.name`. This attribute MUST NOT be used on
-// the Profile signal since the data is already captured in 'message Line'. This
-// constraint is imposed to prevent redundancy and maintain data integrity.
-func CodeLineNumber(val int) attribute.KeyValue {
- return CodeLineNumberKey.Int(val)
-}
-
-// CodeStacktrace returns an attribute KeyValue conforming to the
-// "code.stacktrace" semantic conventions. It represents a stacktrace as a string
-// in the natural representation for the language runtime. The representation is
-// identical to [`exception.stacktrace`]. This attribute MUST NOT be used on the
-// Profile signal since the data is already captured in 'message Location'. This
-// constraint is imposed to prevent redundancy and maintain data integrity.
-//
-// [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation
-func CodeStacktrace(val string) attribute.KeyValue {
- return CodeStacktraceKey.String(val)
-}
-
-// Namespace: container
-const (
- // ContainerCommandKey is the attribute Key conforming to the
- // "container.command" semantic conventions. It represents the command used to
- // run the container (i.e. the command name).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol"
- // Note: If using embedded credentials or sensitive data, it is recommended to
- // remove them to prevent potential leakage.
- ContainerCommandKey = attribute.Key("container.command")
-
- // ContainerCommandArgsKey is the attribute Key conforming to the
- // "container.command_args" semantic conventions. It represents the all the
- // command arguments (including the command/executable itself) run by the
- // container.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol", "--config", "config.yaml"
- ContainerCommandArgsKey = attribute.Key("container.command_args")
-
- // ContainerCommandLineKey is the attribute Key conforming to the
- // "container.command_line" semantic conventions. It represents the full command
- // run by the container as a single string representing the full command.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcontribcol --config config.yaml"
- ContainerCommandLineKey = attribute.Key("container.command_line")
-
- // ContainerCSIPluginNameKey is the attribute Key conforming to the
- // "container.csi.plugin.name" semantic conventions. It represents the name of
- // the CSI ([Container Storage Interface]) plugin used by the volume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pd.csi.storage.gke.io"
- // Note: This can sometimes be referred to as a "driver" in CSI implementations.
- // This should represent the `name` field of the GetPluginInfo RPC.
- //
- // [Container Storage Interface]: https://github.com/container-storage-interface/spec
- ContainerCSIPluginNameKey = attribute.Key("container.csi.plugin.name")
-
- // ContainerCSIVolumeIDKey is the attribute Key conforming to the
- // "container.csi.volume.id" semantic conventions. It represents the unique
- // volume ID returned by the CSI ([Container Storage Interface]) plugin.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk"
- // Note: This can sometimes be referred to as a "volume handle" in CSI
- // implementations. This should represent the `Volume.volume_id` field in CSI
- // spec.
- //
- // [Container Storage Interface]: https://github.com/container-storage-interface/spec
- ContainerCSIVolumeIDKey = attribute.Key("container.csi.volume.id")
-
- // ContainerIDKey is the attribute Key conforming to the "container.id" semantic
- // conventions. It represents the container ID. Usually a UUID, as for example
- // used to [identify Docker containers]. The UUID might be abbreviated.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "a3bf90e006b2"
- //
- // [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification
- ContainerIDKey = attribute.Key("container.id")
-
- // ContainerImageIDKey is the attribute Key conforming to the
- // "container.image.id" semantic conventions. It represents the runtime specific
- // image identifier. Usually a hash algorithm followed by a UUID.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f"
- // Note: Docker defines a sha256 of the image id; `container.image.id`
- // corresponds to the `Image` field from the Docker container inspect [API]
- // endpoint.
- // K8s defines a link to the container registry repository with digest
- // `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`
- // .
- // The ID is assigned by the container runtime and can vary in different
- // environments. Consider using `oci.manifest.digest` if it is important to
- // identify the same image in different environments/runtimes.
- //
- // [API]: https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect
- ContainerImageIDKey = attribute.Key("container.image.id")
-
- // ContainerImageNameKey is the attribute Key conforming to the
- // "container.image.name" semantic conventions. It represents the name of the
- // image the container was built on.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "gcr.io/opentelemetry/operator"
- ContainerImageNameKey = attribute.Key("container.image.name")
-
- // ContainerImageRepoDigestsKey is the attribute Key conforming to the
- // "container.image.repo_digests" semantic conventions. It represents the repo
- // digests of the container image as provided by the container runtime.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples:
- // "example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb",
- // "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578"
- // Note: [Docker] and [CRI] report those under the `RepoDigests` field.
- //
- // [Docker]: https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect
- // [CRI]: https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238
- ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests")
-
- // ContainerImageTagsKey is the attribute Key conforming to the
- // "container.image.tags" semantic conventions. It represents the container
- // image tags. An example can be found in [Docker Image Inspect]. Should be only
- // the `` section of the full name for example from
- // `registry.example.com/my-org/my-image:`.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "v1.27.1", "3.5.7-0"
- //
- // [Docker Image Inspect]: https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect
- ContainerImageTagsKey = attribute.Key("container.image.tags")
-
- // ContainerNameKey is the attribute Key conforming to the "container.name"
- // semantic conventions. It represents the container name used by container
- // runtime.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-autoconf"
- ContainerNameKey = attribute.Key("container.name")
-
- // ContainerRuntimeDescriptionKey is the attribute Key conforming to the
- // "container.runtime.description" semantic conventions. It represents a
- // description about the runtime which could include, for example details about
- // the CRI/API version being used or other customizations.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "docker://19.3.1 - CRI: 1.22.0"
- ContainerRuntimeDescriptionKey = attribute.Key("container.runtime.description")
-
- // ContainerRuntimeNameKey is the attribute Key conforming to the
- // "container.runtime.name" semantic conventions. It represents the container
- // runtime managing this container.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "docker", "containerd", "rkt"
- ContainerRuntimeNameKey = attribute.Key("container.runtime.name")
-
- // ContainerRuntimeVersionKey is the attribute Key conforming to the
- // "container.runtime.version" semantic conventions. It represents the version
- // of the runtime of this process, as returned by the runtime without
- // modification.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0.0
- ContainerRuntimeVersionKey = attribute.Key("container.runtime.version")
-)
-
-// ContainerCommand returns an attribute KeyValue conforming to the
-// "container.command" semantic conventions. It represents the command used to
-// run the container (i.e. the command name).
-func ContainerCommand(val string) attribute.KeyValue {
- return ContainerCommandKey.String(val)
-}
-
-// ContainerCommandArgs returns an attribute KeyValue conforming to the
-// "container.command_args" semantic conventions. It represents the all the
-// command arguments (including the command/executable itself) run by the
-// container.
-func ContainerCommandArgs(val ...string) attribute.KeyValue {
- return ContainerCommandArgsKey.StringSlice(val)
-}
-
-// ContainerCommandLine returns an attribute KeyValue conforming to the
-// "container.command_line" semantic conventions. It represents the full command
-// run by the container as a single string representing the full command.
-func ContainerCommandLine(val string) attribute.KeyValue {
- return ContainerCommandLineKey.String(val)
-}
-
-// ContainerCSIPluginName returns an attribute KeyValue conforming to the
-// "container.csi.plugin.name" semantic conventions. It represents the name of
-// the CSI ([Container Storage Interface]) plugin used by the volume.
-//
-// [Container Storage Interface]: https://github.com/container-storage-interface/spec
-func ContainerCSIPluginName(val string) attribute.KeyValue {
- return ContainerCSIPluginNameKey.String(val)
-}
-
-// ContainerCSIVolumeID returns an attribute KeyValue conforming to the
-// "container.csi.volume.id" semantic conventions. It represents the unique
-// volume ID returned by the CSI ([Container Storage Interface]) plugin.
-//
-// [Container Storage Interface]: https://github.com/container-storage-interface/spec
-func ContainerCSIVolumeID(val string) attribute.KeyValue {
- return ContainerCSIVolumeIDKey.String(val)
-}
-
-// ContainerID returns an attribute KeyValue conforming to the "container.id"
-// semantic conventions. It represents the container ID. Usually a UUID, as for
-// example used to [identify Docker containers]. The UUID might be abbreviated.
-//
-// [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification
-func ContainerID(val string) attribute.KeyValue {
- return ContainerIDKey.String(val)
-}
-
-// ContainerImageID returns an attribute KeyValue conforming to the
-// "container.image.id" semantic conventions. It represents the runtime specific
-// image identifier. Usually a hash algorithm followed by a UUID.
-func ContainerImageID(val string) attribute.KeyValue {
- return ContainerImageIDKey.String(val)
-}
-
-// ContainerImageName returns an attribute KeyValue conforming to the
-// "container.image.name" semantic conventions. It represents the name of the
-// image the container was built on.
-func ContainerImageName(val string) attribute.KeyValue {
- return ContainerImageNameKey.String(val)
-}
-
-// ContainerImageRepoDigests returns an attribute KeyValue conforming to the
-// "container.image.repo_digests" semantic conventions. It represents the repo
-// digests of the container image as provided by the container runtime.
-func ContainerImageRepoDigests(val ...string) attribute.KeyValue {
- return ContainerImageRepoDigestsKey.StringSlice(val)
-}
-
-// ContainerImageTags returns an attribute KeyValue conforming to the
-// "container.image.tags" semantic conventions. It represents the container image
-// tags. An example can be found in [Docker Image Inspect]. Should be only the
-// `` section of the full name for example from
-// `registry.example.com/my-org/my-image:`.
-//
-// [Docker Image Inspect]: https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect
-func ContainerImageTags(val ...string) attribute.KeyValue {
- return ContainerImageTagsKey.StringSlice(val)
-}
-
-// ContainerLabel returns an attribute KeyValue conforming to the
-// "container.label" semantic conventions. It represents the container labels,
-// `` being the label name, the value being the label value.
-func ContainerLabel(key string, val string) attribute.KeyValue {
- return attribute.String("container.label."+key, val)
-}
-
-// ContainerName returns an attribute KeyValue conforming to the "container.name"
-// semantic conventions. It represents the container name used by container
-// runtime.
-func ContainerName(val string) attribute.KeyValue {
- return ContainerNameKey.String(val)
-}
-
-// ContainerRuntimeDescription returns an attribute KeyValue conforming to the
-// "container.runtime.description" semantic conventions. It represents a
-// description about the runtime which could include, for example details about
-// the CRI/API version being used or other customizations.
-func ContainerRuntimeDescription(val string) attribute.KeyValue {
- return ContainerRuntimeDescriptionKey.String(val)
-}
-
-// ContainerRuntimeName returns an attribute KeyValue conforming to the
-// "container.runtime.name" semantic conventions. It represents the container
-// runtime managing this container.
-func ContainerRuntimeName(val string) attribute.KeyValue {
- return ContainerRuntimeNameKey.String(val)
-}
-
-// ContainerRuntimeVersion returns an attribute KeyValue conforming to the
-// "container.runtime.version" semantic conventions. It represents the version of
-// the runtime of this process, as returned by the runtime without modification.
-func ContainerRuntimeVersion(val string) attribute.KeyValue {
- return ContainerRuntimeVersionKey.String(val)
-}
-
-// Namespace: cpu
-const (
- // CPULogicalNumberKey is the attribute Key conforming to the
- // "cpu.logical_number" semantic conventions. It represents the logical CPU
- // number [0..n-1].
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1
- CPULogicalNumberKey = attribute.Key("cpu.logical_number")
-
- // CPUModeKey is the attribute Key conforming to the "cpu.mode" semantic
- // conventions. It represents the mode of the CPU.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "user", "system"
- CPUModeKey = attribute.Key("cpu.mode")
-)
-
-// CPULogicalNumber returns an attribute KeyValue conforming to the
-// "cpu.logical_number" semantic conventions. It represents the logical CPU
-// number [0..n-1].
-func CPULogicalNumber(val int) attribute.KeyValue {
- return CPULogicalNumberKey.Int(val)
-}
-
-// Enum values for cpu.mode
-var (
- // User
- // Stability: development
- CPUModeUser = CPUModeKey.String("user")
- // System
- // Stability: development
- CPUModeSystem = CPUModeKey.String("system")
- // Nice
- // Stability: development
- CPUModeNice = CPUModeKey.String("nice")
- // Idle
- // Stability: development
- CPUModeIdle = CPUModeKey.String("idle")
- // IO Wait
- // Stability: development
- CPUModeIOWait = CPUModeKey.String("iowait")
- // Interrupt
- // Stability: development
- CPUModeInterrupt = CPUModeKey.String("interrupt")
- // Steal
- // Stability: development
- CPUModeSteal = CPUModeKey.String("steal")
- // Kernel
- // Stability: development
- CPUModeKernel = CPUModeKey.String("kernel")
-)
-
-// Namespace: db
-const (
- // DBClientConnectionPoolNameKey is the attribute Key conforming to the
- // "db.client.connection.pool.name" semantic conventions. It represents the name
- // of the connection pool; unique within the instrumented application. In case
- // the connection pool implementation doesn't provide a name, instrumentation
- // SHOULD use a combination of parameters that would make the name unique, for
- // example, combining attributes `server.address`, `server.port`, and
- // `db.namespace`, formatted as `server.address:server.port/db.namespace`.
- // Instrumentations that generate connection pool name following different
- // patterns SHOULD document it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myDataSource"
- DBClientConnectionPoolNameKey = attribute.Key("db.client.connection.pool.name")
-
- // DBClientConnectionStateKey is the attribute Key conforming to the
- // "db.client.connection.state" semantic conventions. It represents the state of
- // a connection in the pool.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "idle"
- DBClientConnectionStateKey = attribute.Key("db.client.connection.state")
-
- // DBCollectionNameKey is the attribute Key conforming to the
- // "db.collection.name" semantic conventions. It represents the name of a
- // collection (table, container) within the database.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "public.users", "customers"
- // Note: It is RECOMMENDED to capture the value as provided by the application
- // without attempting to do any case normalization.
- //
- // The collection name SHOULD NOT be extracted from `db.query.text`,
- // when the database system supports query text with multiple collections
- // in non-batch operations.
- //
- // For batch operations, if the individual operations are known to have the same
- // collection name then that collection name SHOULD be used.
- DBCollectionNameKey = attribute.Key("db.collection.name")
-
- // DBNamespaceKey is the attribute Key conforming to the "db.namespace" semantic
- // conventions. It represents the name of the database, fully qualified within
- // the server address and port.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "customers", "test.users"
- // Note: If a database system has multiple namespace components, they SHOULD be
- // concatenated from the most general to the most specific namespace component,
- // using `|` as a separator between the components. Any missing components (and
- // their associated separators) SHOULD be omitted.
- // Semantic conventions for individual database systems SHOULD document what
- // `db.namespace` means in the context of that system.
- // It is RECOMMENDED to capture the value as provided by the application without
- // attempting to do any case normalization.
- DBNamespaceKey = attribute.Key("db.namespace")
-
- // DBOperationBatchSizeKey is the attribute Key conforming to the
- // "db.operation.batch.size" semantic conventions. It represents the number of
- // queries included in a batch operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 2, 3, 4
- // Note: Operations are only considered batches when they contain two or more
- // operations, and so `db.operation.batch.size` SHOULD never be `1`.
- DBOperationBatchSizeKey = attribute.Key("db.operation.batch.size")
-
- // DBOperationNameKey is the attribute Key conforming to the "db.operation.name"
- // semantic conventions. It represents the name of the operation or command
- // being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "findAndModify", "HMSET", "SELECT"
- // Note: It is RECOMMENDED to capture the value as provided by the application
- // without attempting to do any case normalization.
- //
- // The operation name SHOULD NOT be extracted from `db.query.text`,
- // when the database system supports query text with multiple operations
- // in non-batch operations.
- //
- // If spaces can occur in the operation name, multiple consecutive spaces
- // SHOULD be normalized to a single space.
- //
- // For batch operations, if the individual operations are known to have the same
- // operation name
- // then that operation name SHOULD be used prepended by `BATCH `,
- // otherwise `db.operation.name` SHOULD be `BATCH` or some other database
- // system specific term if more applicable.
- DBOperationNameKey = attribute.Key("db.operation.name")
-
- // DBQuerySummaryKey is the attribute Key conforming to the "db.query.summary"
- // semantic conventions. It represents the low cardinality summary of a database
- // query.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "SELECT wuser_table", "INSERT shipping_details SELECT orders", "get
- // user by id"
- // Note: The query summary describes a class of database queries and is useful
- // as a grouping key, especially when analyzing telemetry for database
- // calls involving complex queries.
- //
- // Summary may be available to the instrumentation through
- // instrumentation hooks or other means. If it is not available,
- // instrumentations
- // that support query parsing SHOULD generate a summary following
- // [Generating query summary]
- // section.
- //
- // For batch operations, if the individual operations are known to have the same
- // query summary
- // then that query summary SHOULD be used prepended by `BATCH `,
- // otherwise `db.query.summary` SHOULD be `BATCH` or some other database
- // system specific term if more applicable.
- //
- // [Generating query summary]: /docs/db/database-spans.md#generating-a-summary-of-the-query
- DBQuerySummaryKey = attribute.Key("db.query.summary")
-
- // DBQueryTextKey is the attribute Key conforming to the "db.query.text"
- // semantic conventions. It represents the database query being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "SELECT * FROM wuser_table where username = ?", "SET mykey ?"
- // Note: For sanitization see [Sanitization of `db.query.text`].
- // For batch operations, if the individual operations are known to have the same
- // query text then that query text SHOULD be used, otherwise all of the
- // individual query texts SHOULD be concatenated with separator `; ` or some
- // other database system specific separator if more applicable.
- // Parameterized query text SHOULD NOT be sanitized. Even though parameterized
- // query text can potentially have sensitive data, by using a parameterized
- // query the user is giving a strong signal that any sensitive data will be
- // passed as parameter values, and the benefit to observability of capturing the
- // static part of the query text by default outweighs the risk.
- //
- // [Sanitization of `db.query.text`]: /docs/db/database-spans.md#sanitization-of-dbquerytext
- DBQueryTextKey = attribute.Key("db.query.text")
-
- // DBResponseReturnedRowsKey is the attribute Key conforming to the
- // "db.response.returned_rows" semantic conventions. It represents the number of
- // rows returned by the operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 10, 30, 1000
- DBResponseReturnedRowsKey = attribute.Key("db.response.returned_rows")
-
- // DBResponseStatusCodeKey is the attribute Key conforming to the
- // "db.response.status_code" semantic conventions. It represents the database
- // response status code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "102", "ORA-17002", "08P01", "404"
- // Note: The status code returned by the database. Usually it represents an
- // error code, but may also represent partial success, warning, or differentiate
- // between various types of successful outcomes.
- // Semantic conventions for individual database systems SHOULD document what
- // `db.response.status_code` means in the context of that system.
- DBResponseStatusCodeKey = attribute.Key("db.response.status_code")
-
- // DBStoredProcedureNameKey is the attribute Key conforming to the
- // "db.stored_procedure.name" semantic conventions. It represents the name of a
- // stored procedure within the database.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "GetCustomer"
- // Note: It is RECOMMENDED to capture the value as provided by the application
- // without attempting to do any case normalization.
- //
- // For batch operations, if the individual operations are known to have the same
- // stored procedure name then that stored procedure name SHOULD be used.
- DBStoredProcedureNameKey = attribute.Key("db.stored_procedure.name")
-
- // DBSystemNameKey is the attribute Key conforming to the "db.system.name"
- // semantic conventions. It represents the database management system (DBMS)
- // product as identified by the client instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples:
- // Note: The actual DBMS may differ from the one identified by the client. For
- // example, when using PostgreSQL client libraries to connect to a CockroachDB,
- // the `db.system.name` is set to `postgresql` based on the instrumentation's
- // best knowledge.
- DBSystemNameKey = attribute.Key("db.system.name")
-)
-
-// DBClientConnectionPoolName returns an attribute KeyValue conforming to the
-// "db.client.connection.pool.name" semantic conventions. It represents the name
-// of the connection pool; unique within the instrumented application. In case
-// the connection pool implementation doesn't provide a name, instrumentation
-// SHOULD use a combination of parameters that would make the name unique, for
-// example, combining attributes `server.address`, `server.port`, and
-// `db.namespace`, formatted as `server.address:server.port/db.namespace`.
-// Instrumentations that generate connection pool name following different
-// patterns SHOULD document it.
-func DBClientConnectionPoolName(val string) attribute.KeyValue {
- return DBClientConnectionPoolNameKey.String(val)
-}
-
-// DBCollectionName returns an attribute KeyValue conforming to the
-// "db.collection.name" semantic conventions. It represents the name of a
-// collection (table, container) within the database.
-func DBCollectionName(val string) attribute.KeyValue {
- return DBCollectionNameKey.String(val)
-}
-
-// DBNamespace returns an attribute KeyValue conforming to the "db.namespace"
-// semantic conventions. It represents the name of the database, fully qualified
-// within the server address and port.
-func DBNamespace(val string) attribute.KeyValue {
- return DBNamespaceKey.String(val)
-}
-
-// DBOperationBatchSize returns an attribute KeyValue conforming to the
-// "db.operation.batch.size" semantic conventions. It represents the number of
-// queries included in a batch operation.
-func DBOperationBatchSize(val int) attribute.KeyValue {
- return DBOperationBatchSizeKey.Int(val)
-}
-
-// DBOperationName returns an attribute KeyValue conforming to the
-// "db.operation.name" semantic conventions. It represents the name of the
-// operation or command being executed.
-func DBOperationName(val string) attribute.KeyValue {
- return DBOperationNameKey.String(val)
-}
-
-// DBOperationParameter returns an attribute KeyValue conforming to the
-// "db.operation.parameter" semantic conventions. It represents a database
-// operation parameter, with `` being the parameter name, and the attribute
-// value being a string representation of the parameter value.
-func DBOperationParameter(key string, val string) attribute.KeyValue {
- return attribute.String("db.operation.parameter."+key, val)
-}
-
-// DBQueryParameter returns an attribute KeyValue conforming to the
-// "db.query.parameter" semantic conventions. It represents a database query
-// parameter, with `` being the parameter name, and the attribute value
-// being a string representation of the parameter value.
-func DBQueryParameter(key string, val string) attribute.KeyValue {
- return attribute.String("db.query.parameter."+key, val)
-}
-
-// DBQuerySummary returns an attribute KeyValue conforming to the
-// "db.query.summary" semantic conventions. It represents the low cardinality
-// summary of a database query.
-func DBQuerySummary(val string) attribute.KeyValue {
- return DBQuerySummaryKey.String(val)
-}
-
-// DBQueryText returns an attribute KeyValue conforming to the "db.query.text"
-// semantic conventions. It represents the database query being executed.
-func DBQueryText(val string) attribute.KeyValue {
- return DBQueryTextKey.String(val)
-}
-
-// DBResponseReturnedRows returns an attribute KeyValue conforming to the
-// "db.response.returned_rows" semantic conventions. It represents the number of
-// rows returned by the operation.
-func DBResponseReturnedRows(val int) attribute.KeyValue {
- return DBResponseReturnedRowsKey.Int(val)
-}
-
-// DBResponseStatusCode returns an attribute KeyValue conforming to the
-// "db.response.status_code" semantic conventions. It represents the database
-// response status code.
-func DBResponseStatusCode(val string) attribute.KeyValue {
- return DBResponseStatusCodeKey.String(val)
-}
-
-// DBStoredProcedureName returns an attribute KeyValue conforming to the
-// "db.stored_procedure.name" semantic conventions. It represents the name of a
-// stored procedure within the database.
-func DBStoredProcedureName(val string) attribute.KeyValue {
- return DBStoredProcedureNameKey.String(val)
-}
-
-// Enum values for db.client.connection.state
-var (
- // idle
- // Stability: development
- DBClientConnectionStateIdle = DBClientConnectionStateKey.String("idle")
- // used
- // Stability: development
- DBClientConnectionStateUsed = DBClientConnectionStateKey.String("used")
-)
-
-// Enum values for db.system.name
-var (
- // Some other SQL database. Fallback only.
- // Stability: development
- DBSystemNameOtherSQL = DBSystemNameKey.String("other_sql")
- // [Adabas (Adaptable Database System)]
- // Stability: development
- //
- // [Adabas (Adaptable Database System)]: https://documentation.softwareag.com/?pf=adabas
- DBSystemNameSoftwareagAdabas = DBSystemNameKey.String("softwareag.adabas")
- // [Actian Ingres]
- // Stability: development
- //
- // [Actian Ingres]: https://www.actian.com/databases/ingres/
- DBSystemNameActianIngres = DBSystemNameKey.String("actian.ingres")
- // [Amazon DynamoDB]
- // Stability: development
- //
- // [Amazon DynamoDB]: https://aws.amazon.com/pm/dynamodb/
- DBSystemNameAWSDynamoDB = DBSystemNameKey.String("aws.dynamodb")
- // [Amazon Redshift]
- // Stability: development
- //
- // [Amazon Redshift]: https://aws.amazon.com/redshift/
- DBSystemNameAWSRedshift = DBSystemNameKey.String("aws.redshift")
- // [Azure Cosmos DB]
- // Stability: development
- //
- // [Azure Cosmos DB]: https://learn.microsoft.com/azure/cosmos-db
- DBSystemNameAzureCosmosDB = DBSystemNameKey.String("azure.cosmosdb")
- // [InterSystems CachΓ©]
- // Stability: development
- //
- // [InterSystems CachΓ©]: https://www.intersystems.com/products/cache/
- DBSystemNameIntersystemsCache = DBSystemNameKey.String("intersystems.cache")
- // [Apache Cassandra]
- // Stability: development
- //
- // [Apache Cassandra]: https://cassandra.apache.org/
- DBSystemNameCassandra = DBSystemNameKey.String("cassandra")
- // [ClickHouse]
- // Stability: development
- //
- // [ClickHouse]: https://clickhouse.com/
- DBSystemNameClickHouse = DBSystemNameKey.String("clickhouse")
- // [CockroachDB]
- // Stability: development
- //
- // [CockroachDB]: https://www.cockroachlabs.com/
- DBSystemNameCockroachDB = DBSystemNameKey.String("cockroachdb")
- // [Couchbase]
- // Stability: development
- //
- // [Couchbase]: https://www.couchbase.com/
- DBSystemNameCouchbase = DBSystemNameKey.String("couchbase")
- // [Apache CouchDB]
- // Stability: development
- //
- // [Apache CouchDB]: https://couchdb.apache.org/
- DBSystemNameCouchDB = DBSystemNameKey.String("couchdb")
- // [Apache Derby]
- // Stability: development
- //
- // [Apache Derby]: https://db.apache.org/derby/
- DBSystemNameDerby = DBSystemNameKey.String("derby")
- // [Elasticsearch]
- // Stability: development
- //
- // [Elasticsearch]: https://www.elastic.co/elasticsearch
- DBSystemNameElasticsearch = DBSystemNameKey.String("elasticsearch")
- // [Firebird]
- // Stability: development
- //
- // [Firebird]: https://www.firebirdsql.org/
- DBSystemNameFirebirdSQL = DBSystemNameKey.String("firebirdsql")
- // [Google Cloud Spanner]
- // Stability: development
- //
- // [Google Cloud Spanner]: https://cloud.google.com/spanner
- DBSystemNameGCPSpanner = DBSystemNameKey.String("gcp.spanner")
- // [Apache Geode]
- // Stability: development
- //
- // [Apache Geode]: https://geode.apache.org/
- DBSystemNameGeode = DBSystemNameKey.String("geode")
- // [H2 Database]
- // Stability: development
- //
- // [H2 Database]: https://h2database.com/
- DBSystemNameH2database = DBSystemNameKey.String("h2database")
- // [Apache HBase]
- // Stability: development
- //
- // [Apache HBase]: https://hbase.apache.org/
- DBSystemNameHBase = DBSystemNameKey.String("hbase")
- // [Apache Hive]
- // Stability: development
- //
- // [Apache Hive]: https://hive.apache.org/
- DBSystemNameHive = DBSystemNameKey.String("hive")
- // [HyperSQL Database]
- // Stability: development
- //
- // [HyperSQL Database]: https://hsqldb.org/
- DBSystemNameHSQLDB = DBSystemNameKey.String("hsqldb")
- // [IBM Db2]
- // Stability: development
- //
- // [IBM Db2]: https://www.ibm.com/db2
- DBSystemNameIBMDB2 = DBSystemNameKey.String("ibm.db2")
- // [IBM Informix]
- // Stability: development
- //
- // [IBM Informix]: https://www.ibm.com/products/informix
- DBSystemNameIBMInformix = DBSystemNameKey.String("ibm.informix")
- // [IBM Netezza]
- // Stability: development
- //
- // [IBM Netezza]: https://www.ibm.com/products/netezza
- DBSystemNameIBMNetezza = DBSystemNameKey.String("ibm.netezza")
- // [InfluxDB]
- // Stability: development
- //
- // [InfluxDB]: https://www.influxdata.com/
- DBSystemNameInfluxDB = DBSystemNameKey.String("influxdb")
- // [Instant]
- // Stability: development
- //
- // [Instant]: https://www.instantdb.com/
- DBSystemNameInstantDB = DBSystemNameKey.String("instantdb")
- // [MariaDB]
- // Stability: stable
- //
- // [MariaDB]: https://mariadb.org/
- DBSystemNameMariaDB = DBSystemNameKey.String("mariadb")
- // [Memcached]
- // Stability: development
- //
- // [Memcached]: https://memcached.org/
- DBSystemNameMemcached = DBSystemNameKey.String("memcached")
- // [MongoDB]
- // Stability: development
- //
- // [MongoDB]: https://www.mongodb.com/
- DBSystemNameMongoDB = DBSystemNameKey.String("mongodb")
- // [Microsoft SQL Server]
- // Stability: stable
- //
- // [Microsoft SQL Server]: https://www.microsoft.com/sql-server
- DBSystemNameMicrosoftSQLServer = DBSystemNameKey.String("microsoft.sql_server")
- // [MySQL]
- // Stability: stable
- //
- // [MySQL]: https://www.mysql.com/
- DBSystemNameMySQL = DBSystemNameKey.String("mysql")
- // [Neo4j]
- // Stability: development
- //
- // [Neo4j]: https://neo4j.com/
- DBSystemNameNeo4j = DBSystemNameKey.String("neo4j")
- // [OpenSearch]
- // Stability: development
- //
- // [OpenSearch]: https://opensearch.org/
- DBSystemNameOpenSearch = DBSystemNameKey.String("opensearch")
- // [Oracle Database]
- // Stability: development
- //
- // [Oracle Database]: https://www.oracle.com/database/
- DBSystemNameOracleDB = DBSystemNameKey.String("oracle.db")
- // [PostgreSQL]
- // Stability: stable
- //
- // [PostgreSQL]: https://www.postgresql.org/
- DBSystemNamePostgreSQL = DBSystemNameKey.String("postgresql")
- // [Redis]
- // Stability: development
- //
- // [Redis]: https://redis.io/
- DBSystemNameRedis = DBSystemNameKey.String("redis")
- // [SAP HANA]
- // Stability: development
- //
- // [SAP HANA]: https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html
- DBSystemNameSAPHANA = DBSystemNameKey.String("sap.hana")
- // [SAP MaxDB]
- // Stability: development
- //
- // [SAP MaxDB]: https://maxdb.sap.com/
- DBSystemNameSAPMaxDB = DBSystemNameKey.String("sap.maxdb")
- // [SQLite]
- // Stability: development
- //
- // [SQLite]: https://www.sqlite.org/
- DBSystemNameSQLite = DBSystemNameKey.String("sqlite")
- // [Teradata]
- // Stability: development
- //
- // [Teradata]: https://www.teradata.com/
- DBSystemNameTeradata = DBSystemNameKey.String("teradata")
- // [Trino]
- // Stability: development
- //
- // [Trino]: https://trino.io/
- DBSystemNameTrino = DBSystemNameKey.String("trino")
-)
-
-// Namespace: deployment
-const (
- // DeploymentEnvironmentNameKey is the attribute Key conforming to the
- // "deployment.environment.name" semantic conventions. It represents the name of
- // the [deployment environment] (aka deployment tier).
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "staging", "production"
- // Note: `deployment.environment.name` does not affect the uniqueness
- // constraints defined through
- // the `service.namespace`, `service.name` and `service.instance.id` resource
- // attributes.
- // This implies that resources carrying the following attribute combinations
- // MUST be
- // considered to be identifying the same service:
- //
- // - `service.name=frontend`, `deployment.environment.name=production`
- // - `service.name=frontend`, `deployment.environment.name=staging`.
- //
- //
- // [deployment environment]: https://wikipedia.org/wiki/Deployment_environment
- DeploymentEnvironmentNameKey = attribute.Key("deployment.environment.name")
-
- // DeploymentIDKey is the attribute Key conforming to the "deployment.id"
- // semantic conventions. It represents the id of the deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1208"
- DeploymentIDKey = attribute.Key("deployment.id")
-
- // DeploymentNameKey is the attribute Key conforming to the "deployment.name"
- // semantic conventions. It represents the name of the deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "deploy my app", "deploy-frontend"
- DeploymentNameKey = attribute.Key("deployment.name")
-
- // DeploymentStatusKey is the attribute Key conforming to the
- // "deployment.status" semantic conventions. It represents the status of the
- // deployment.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- DeploymentStatusKey = attribute.Key("deployment.status")
-)
-
-// DeploymentID returns an attribute KeyValue conforming to the "deployment.id"
-// semantic conventions. It represents the id of the deployment.
-func DeploymentID(val string) attribute.KeyValue {
- return DeploymentIDKey.String(val)
-}
-
-// DeploymentName returns an attribute KeyValue conforming to the
-// "deployment.name" semantic conventions. It represents the name of the
-// deployment.
-func DeploymentName(val string) attribute.KeyValue {
- return DeploymentNameKey.String(val)
-}
-
-// Enum values for deployment.environment.name
-var (
- // Production environment
- // Stability: stable
- DeploymentEnvironmentNameProduction = DeploymentEnvironmentNameKey.String("production")
- // Staging environment
- // Stability: stable
- DeploymentEnvironmentNameStaging = DeploymentEnvironmentNameKey.String("staging")
- // Testing environment
- // Stability: stable
- DeploymentEnvironmentNameTest = DeploymentEnvironmentNameKey.String("test")
- // Development environment
- // Stability: stable
- DeploymentEnvironmentNameDevelopment = DeploymentEnvironmentNameKey.String("development")
-)
-
-// Enum values for deployment.status
-var (
- // failed
- // Stability: development
- DeploymentStatusFailed = DeploymentStatusKey.String("failed")
- // succeeded
- // Stability: development
- DeploymentStatusSucceeded = DeploymentStatusKey.String("succeeded")
-)
-
-// Namespace: destination
-const (
- // DestinationAddressKey is the attribute Key conforming to the
- // "destination.address" semantic conventions. It represents the destination
- // address - domain name if available without reverse DNS lookup; otherwise, IP
- // address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "destination.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the source side, and when communicating through an
- // intermediary, `destination.address` SHOULD represent the destination address
- // behind any intermediaries, for example proxies, if it's available.
- DestinationAddressKey = attribute.Key("destination.address")
-
- // DestinationPortKey is the attribute Key conforming to the "destination.port"
- // semantic conventions. It represents the destination port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3389, 2888
- DestinationPortKey = attribute.Key("destination.port")
-)
-
-// DestinationAddress returns an attribute KeyValue conforming to the
-// "destination.address" semantic conventions. It represents the destination
-// address - domain name if available without reverse DNS lookup; otherwise, IP
-// address or Unix domain socket name.
-func DestinationAddress(val string) attribute.KeyValue {
- return DestinationAddressKey.String(val)
-}
-
-// DestinationPort returns an attribute KeyValue conforming to the
-// "destination.port" semantic conventions. It represents the destination port
-// number.
-func DestinationPort(val int) attribute.KeyValue {
- return DestinationPortKey.Int(val)
-}
-
-// Namespace: device
-const (
- // DeviceIDKey is the attribute Key conforming to the "device.id" semantic
- // conventions. It represents a unique identifier representing the device.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123456789012345", "01:23:45:67:89:AB"
- // Note: Its value SHOULD be identical for all apps on a device and it SHOULD
- // NOT change if an app is uninstalled and re-installed.
- // However, it might be resettable by the user for all apps on a device.
- // Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) MAY be
- // used as values.
- //
- // More information about Android identifier best practices can be found in the
- // [Android user data IDs guide].
- //
- // > [!WARNING]> This attribute may contain sensitive (PII) information. Caution
- // > should be taken when storing personal data or anything which can identify a
- // > user. GDPR and data protection laws may apply,
- // > ensure you do your own due diligence.> Due to these reasons, this
- // > identifier is not recommended for consumer applications and will likely
- // > result in rejection from both Google Play and App Store.
- // > However, it may be appropriate for specific enterprise scenarios, such as
- // > kiosk devices or enterprise-managed devices, with appropriate compliance
- // > clearance.
- // > Any instrumentation providing this identifier MUST implement it as an
- // > opt-in feature.> See [`app.installation.id`]> for a more
- // > privacy-preserving alternative.
- //
- // [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids
- // [`app.installation.id`]: /docs/registry/attributes/app.md#app-installation-id
- DeviceIDKey = attribute.Key("device.id")
-
- // DeviceManufacturerKey is the attribute Key conforming to the
- // "device.manufacturer" semantic conventions. It represents the name of the
- // device manufacturer.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Apple", "Samsung"
- // Note: The Android OS provides this field via [Build]. iOS apps SHOULD
- // hardcode the value `Apple`.
- //
- // [Build]: https://developer.android.com/reference/android/os/Build#MANUFACTURER
- DeviceManufacturerKey = attribute.Key("device.manufacturer")
-
- // DeviceModelIdentifierKey is the attribute Key conforming to the
- // "device.model.identifier" semantic conventions. It represents the model
- // identifier for the device.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iPhone3,4", "SM-G920F"
- // Note: It's recommended this value represents a machine-readable version of
- // the model identifier rather than the market or consumer-friendly name of the
- // device.
- DeviceModelIdentifierKey = attribute.Key("device.model.identifier")
-
- // DeviceModelNameKey is the attribute Key conforming to the "device.model.name"
- // semantic conventions. It represents the marketing name for the device model.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iPhone 6s Plus", "Samsung Galaxy S6"
- // Note: It's recommended this value represents a human-readable version of the
- // device model rather than a machine-readable alternative.
- DeviceModelNameKey = attribute.Key("device.model.name")
-)
-
-// DeviceID returns an attribute KeyValue conforming to the "device.id" semantic
-// conventions. It represents a unique identifier representing the device.
-func DeviceID(val string) attribute.KeyValue {
- return DeviceIDKey.String(val)
-}
-
-// DeviceManufacturer returns an attribute KeyValue conforming to the
-// "device.manufacturer" semantic conventions. It represents the name of the
-// device manufacturer.
-func DeviceManufacturer(val string) attribute.KeyValue {
- return DeviceManufacturerKey.String(val)
-}
-
-// DeviceModelIdentifier returns an attribute KeyValue conforming to the
-// "device.model.identifier" semantic conventions. It represents the model
-// identifier for the device.
-func DeviceModelIdentifier(val string) attribute.KeyValue {
- return DeviceModelIdentifierKey.String(val)
-}
-
-// DeviceModelName returns an attribute KeyValue conforming to the
-// "device.model.name" semantic conventions. It represents the marketing name for
-// the device model.
-func DeviceModelName(val string) attribute.KeyValue {
- return DeviceModelNameKey.String(val)
-}
-
-// Namespace: disk
-const (
- // DiskIODirectionKey is the attribute Key conforming to the "disk.io.direction"
- // semantic conventions. It represents the disk IO operation direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "read"
- DiskIODirectionKey = attribute.Key("disk.io.direction")
-)
-
-// Enum values for disk.io.direction
-var (
- // read
- // Stability: development
- DiskIODirectionRead = DiskIODirectionKey.String("read")
- // write
- // Stability: development
- DiskIODirectionWrite = DiskIODirectionKey.String("write")
-)
-
-// Namespace: dns
-const (
- // DNSAnswersKey is the attribute Key conforming to the "dns.answers" semantic
- // conventions. It represents the list of IPv4 or IPv6 addresses resolved during
- // DNS lookup.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
- DNSAnswersKey = attribute.Key("dns.answers")
-
- // DNSQuestionNameKey is the attribute Key conforming to the "dns.question.name"
- // semantic conventions. It represents the name being queried.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "www.example.com", "opentelemetry.io"
- // Note: The name represents the queried domain name as it appears in the DNS
- // query without any additional normalization.
- DNSQuestionNameKey = attribute.Key("dns.question.name")
-)
-
-// DNSAnswers returns an attribute KeyValue conforming to the "dns.answers"
-// semantic conventions. It represents the list of IPv4 or IPv6 addresses
-// resolved during DNS lookup.
-func DNSAnswers(val ...string) attribute.KeyValue {
- return DNSAnswersKey.StringSlice(val)
-}
-
-// DNSQuestionName returns an attribute KeyValue conforming to the
-// "dns.question.name" semantic conventions. It represents the name being
-// queried.
-func DNSQuestionName(val string) attribute.KeyValue {
- return DNSQuestionNameKey.String(val)
-}
-
-// Namespace: elasticsearch
-const (
- // ElasticsearchNodeNameKey is the attribute Key conforming to the
- // "elasticsearch.node.name" semantic conventions. It represents the represents
- // the human-readable identifier of the node/instance to which a request was
- // routed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "instance-0000000001"
- ElasticsearchNodeNameKey = attribute.Key("elasticsearch.node.name")
-)
-
-// ElasticsearchNodeName returns an attribute KeyValue conforming to the
-// "elasticsearch.node.name" semantic conventions. It represents the represents
-// the human-readable identifier of the node/instance to which a request was
-// routed.
-func ElasticsearchNodeName(val string) attribute.KeyValue {
- return ElasticsearchNodeNameKey.String(val)
-}
-
-// Namespace: enduser
-const (
- // EnduserIDKey is the attribute Key conforming to the "enduser.id" semantic
- // conventions. It represents the unique identifier of an end user in the
- // system. It maybe a username, email address, or other identifier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "username"
- // Note: Unique identifier of an end user in the system.
- //
- // > [!Warning]
- // > This field contains sensitive (PII) information.
- EnduserIDKey = attribute.Key("enduser.id")
-
- // EnduserPseudoIDKey is the attribute Key conforming to the "enduser.pseudo.id"
- // semantic conventions. It represents the pseudonymous identifier of an end
- // user. This identifier should be a random value that is not directly linked or
- // associated with the end user's actual identity.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "QdH5CAWJgqVT4rOr0qtumf"
- // Note: Pseudonymous identifier of an end user.
- //
- // > [!Warning]
- // > This field contains sensitive (linkable PII) information.
- EnduserPseudoIDKey = attribute.Key("enduser.pseudo.id")
-)
-
-// EnduserID returns an attribute KeyValue conforming to the "enduser.id"
-// semantic conventions. It represents the unique identifier of an end user in
-// the system. It maybe a username, email address, or other identifier.
-func EnduserID(val string) attribute.KeyValue {
- return EnduserIDKey.String(val)
-}
-
-// EnduserPseudoID returns an attribute KeyValue conforming to the
-// "enduser.pseudo.id" semantic conventions. It represents the pseudonymous
-// identifier of an end user. This identifier should be a random value that is
-// not directly linked or associated with the end user's actual identity.
-func EnduserPseudoID(val string) attribute.KeyValue {
- return EnduserPseudoIDKey.String(val)
-}
-
-// Namespace: error
-const (
- // ErrorTypeKey is the attribute Key conforming to the "error.type" semantic
- // conventions. It represents the describes a class of error the operation ended
- // with.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "timeout", "java.net.UnknownHostException",
- // "server_certificate_invalid", "500"
- // Note: The `error.type` SHOULD be predictable, and SHOULD have low
- // cardinality.
- //
- // When `error.type` is set to a type (e.g., an exception type), its
- // canonical class name identifying the type within the artifact SHOULD be used.
- //
- // If the recorded error type is a wrapper that is not meaningful for
- // failure classification, instrumentation MAY use the type of the inner
- // error instead. For example, in Go, errors created with `fmt.Errorf`
- // using `%w` MAY be unwrapped when the wrapper type does not help
- // classify the failure.
- //
- // Instrumentations SHOULD document the list of errors they report.
- //
- // The cardinality of `error.type` within one instrumentation library SHOULD be
- // low.
- // Telemetry consumers that aggregate data from multiple instrumentation
- // libraries and applications
- // should be prepared for `error.type` to have high cardinality at query time
- // when no
- // additional filters are applied.
- //
- // If the operation has completed successfully, instrumentations SHOULD NOT set
- // `error.type`.
- //
- // If a specific domain defines its own set of error identifiers (such as HTTP
- // or RPC status codes),
- // it's RECOMMENDED to:
- //
- // - Use a domain-specific attribute
- // - Set `error.type` to capture all errors, regardless of whether they are
- // defined within the domain-specific set or not.
- ErrorTypeKey = attribute.Key("error.type")
-)
-
-// Enum values for error.type
-var (
- // A fallback error value to be used when the instrumentation doesn't define a
- // custom value.
- //
- // Stability: stable
- ErrorTypeOther = ErrorTypeKey.String("_OTHER")
-)
-
-// Namespace: exception
-const (
- // ExceptionMessageKey is the attribute Key conforming to the
- // "exception.message" semantic conventions. It represents the exception
- // message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "Division by zero", "Can't convert 'int' object to str implicitly"
- // Note: > [!WARNING]
- //
- // > This attribute may contain sensitive information.
- ExceptionMessageKey = attribute.Key("exception.message")
-
- // ExceptionStacktraceKey is the attribute Key conforming to the
- // "exception.stacktrace" semantic conventions. It represents a stacktrace as a
- // string in the natural representation for the language runtime. The
- // representation is to be determined and documented by each language SIG.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: Exception in thread "main" java.lang.RuntimeException: Test
- // exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at
- // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at
- // com.example.GenerateTrace.main(GenerateTrace.java:5)
- ExceptionStacktraceKey = attribute.Key("exception.stacktrace")
-
- // ExceptionTypeKey is the attribute Key conforming to the "exception.type"
- // semantic conventions. It represents the type of the exception (its
- // fully-qualified class name, if applicable). The dynamic type of the exception
- // should be preferred over the static type in languages that support it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "java.net.ConnectException", "OSError"
- // Note: If the recorded exception type is a wrapper that is not meaningful for
- // failure classification, instrumentation MAY use the type of the inner
- // exception instead. For example, in Go, errors created with `fmt.Errorf`
- // using `%w` MAY be unwrapped when the wrapper type does not help
- // classify the failure.
- ExceptionTypeKey = attribute.Key("exception.type")
-)
-
-// ExceptionMessage returns an attribute KeyValue conforming to the
-// "exception.message" semantic conventions. It represents the exception message.
-func ExceptionMessage(val string) attribute.KeyValue {
- return ExceptionMessageKey.String(val)
-}
-
-// ExceptionStacktrace returns an attribute KeyValue conforming to the
-// "exception.stacktrace" semantic conventions. It represents a stacktrace as a
-// string in the natural representation for the language runtime. The
-// representation is to be determined and documented by each language SIG.
-func ExceptionStacktrace(val string) attribute.KeyValue {
- return ExceptionStacktraceKey.String(val)
-}
-
-// ExceptionType returns an attribute KeyValue conforming to the "exception.type"
-// semantic conventions. It represents the type of the exception (its
-// fully-qualified class name, if applicable). The dynamic type of the exception
-// should be preferred over the static type in languages that support it.
-func ExceptionType(val string) attribute.KeyValue {
- return ExceptionTypeKey.String(val)
-}
-
-// Namespace: faas
-const (
- // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart"
- // semantic conventions. It represents a boolean that is true if the serverless
- // function is executed for the first time (aka cold-start).
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSColdstartKey = attribute.Key("faas.coldstart")
-
- // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic
- // conventions. It represents a string containing the schedule period as
- // [Cron Expression].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0/5 * * * ? *
- //
- // [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
- FaaSCronKey = attribute.Key("faas.cron")
-
- // FaaSDocumentCollectionKey is the attribute Key conforming to the
- // "faas.document.collection" semantic conventions. It represents the name of
- // the source on which the triggering operation was performed. For example, in
- // Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the
- // database name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myBucketName", "myDbName"
- FaaSDocumentCollectionKey = attribute.Key("faas.document.collection")
-
- // FaaSDocumentNameKey is the attribute Key conforming to the
- // "faas.document.name" semantic conventions. It represents the document
- // name/table subjected to the operation. For example, in Cloud Storage or S3 is
- // the name of the file, and in Cosmos DB the table name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "myFile.txt", "myTableName"
- FaaSDocumentNameKey = attribute.Key("faas.document.name")
-
- // FaaSDocumentOperationKey is the attribute Key conforming to the
- // "faas.document.operation" semantic conventions. It represents the describes
- // the type of the operation that was performed on the data.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSDocumentOperationKey = attribute.Key("faas.document.operation")
-
- // FaaSDocumentTimeKey is the attribute Key conforming to the
- // "faas.document.time" semantic conventions. It represents a string containing
- // the time when the data was accessed in the [ISO 8601] format expressed in
- // [UTC].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 2020-01-23T13:47:06Z
- //
- // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
- // [UTC]: https://www.w3.org/TR/NOTE-datetime
- FaaSDocumentTimeKey = attribute.Key("faas.document.time")
-
- // FaaSInstanceKey is the attribute Key conforming to the "faas.instance"
- // semantic conventions. It represents the execution environment ID as a string,
- // that will be potentially reused for other invocations to the same
- // function/function version.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de"
- // Note: - **AWS Lambda:** Use the (full) log stream name.
- FaaSInstanceKey = attribute.Key("faas.instance")
-
- // FaaSInvocationIDKey is the attribute Key conforming to the
- // "faas.invocation_id" semantic conventions. It represents the invocation ID of
- // the current function invocation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: af9d5aa4-a685-4c5f-a22b-444f80b3cc28
- FaaSInvocationIDKey = attribute.Key("faas.invocation_id")
-
- // FaaSInvokedNameKey is the attribute Key conforming to the "faas.invoked_name"
- // semantic conventions. It represents the name of the invoked function.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: my-function
- // Note: SHOULD be equal to the `faas.name` resource attribute of the invoked
- // function.
- FaaSInvokedNameKey = attribute.Key("faas.invoked_name")
-
- // FaaSInvokedProviderKey is the attribute Key conforming to the
- // "faas.invoked_provider" semantic conventions. It represents the cloud
- // provider of the invoked function.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: SHOULD be equal to the `cloud.provider` resource attribute of the
- // invoked function.
- FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider")
-
- // FaaSInvokedRegionKey is the attribute Key conforming to the
- // "faas.invoked_region" semantic conventions. It represents the cloud region of
- // the invoked function.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: eu-central-1
- // Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked
- // function.
- FaaSInvokedRegionKey = attribute.Key("faas.invoked_region")
-
- // FaaSMaxMemoryKey is the attribute Key conforming to the "faas.max_memory"
- // semantic conventions. It represents the amount of memory available to the
- // serverless function converted to Bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: It's recommended to set this attribute since e.g. too little memory can
- // easily stop a Java AWS Lambda function from working correctly. On AWS Lambda,
- // the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this
- // information (which must be multiplied by 1,048,576).
- FaaSMaxMemoryKey = attribute.Key("faas.max_memory")
-
- // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic
- // conventions. It represents the name of the single function that this runtime
- // instance executes.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-function", "myazurefunctionapp/some-function-name"
- // Note: This is the name of the function as configured/deployed on the FaaS
- // platform and is usually different from the name of the callback
- // function (which may be stored in the
- // [`code.namespace`/`code.function.name`]
- // span attributes).
- //
- // For some cloud providers, the above definition is ambiguous. The following
- // definition of function name MUST be used for this attribute
- // (and consequently the span name) for the listed cloud providers/products:
- //
- // - **Azure:** The full name `/`, i.e., function app name
- // followed by a forward slash followed by the function name (this form
- // can also be seen in the resource JSON for the function).
- // This means that a span attribute MUST be used, as an Azure function
- // app can host multiple functions that would usually share
- // a TracerProvider (see also the `cloud.resource_id` attribute).
- //
- //
- // [`code.namespace`/`code.function.name`]: /docs/general/attributes.md#source-code-attributes
- FaaSNameKey = attribute.Key("faas.name")
-
- // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic
- // conventions. It represents a string containing the function invocation time
- // in the [ISO 8601] format expressed in [UTC].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 2020-01-23T13:47:06Z
- //
- // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
- // [UTC]: https://www.w3.org/TR/NOTE-datetime
- FaaSTimeKey = attribute.Key("faas.time")
-
- // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" semantic
- // conventions. It represents the type of the trigger which caused this function
- // invocation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FaaSTriggerKey = attribute.Key("faas.trigger")
-
- // FaaSVersionKey is the attribute Key conforming to the "faas.version" semantic
- // conventions. It represents the immutable version of the function being
- // executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "26", "pinkfroid-00002"
- // Note: Depending on the cloud provider and platform, use:
- //
- // - **AWS Lambda:** The [function version]
- // (an integer represented as a decimal string).
- // - **Google Cloud Run (Services):** The [revision]
- // (i.e., the function name plus the revision suffix).
- // - **Google Cloud Functions:** The value of the
- // [`K_REVISION` environment variable].
- // - **Azure Functions:** Not applicable. Do not set this attribute.
- //
- //
- // [function version]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html
- // [revision]: https://cloud.google.com/run/docs/managing/revisions
- // [`K_REVISION` environment variable]: https://cloud.google.com/run/docs/container-contract#services-env-vars
- FaaSVersionKey = attribute.Key("faas.version")
-)
-
-// FaaSColdstart returns an attribute KeyValue conforming to the "faas.coldstart"
-// semantic conventions. It represents a boolean that is true if the serverless
-// function is executed for the first time (aka cold-start).
-func FaaSColdstart(val bool) attribute.KeyValue {
- return FaaSColdstartKey.Bool(val)
-}
-
-// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" semantic
-// conventions. It represents a string containing the schedule period as
-// [Cron Expression].
-//
-// [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
-func FaaSCron(val string) attribute.KeyValue {
- return FaaSCronKey.String(val)
-}
-
-// FaaSDocumentCollection returns an attribute KeyValue conforming to the
-// "faas.document.collection" semantic conventions. It represents the name of the
-// source on which the triggering operation was performed. For example, in Cloud
-// Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database
-// name.
-func FaaSDocumentCollection(val string) attribute.KeyValue {
- return FaaSDocumentCollectionKey.String(val)
-}
-
-// FaaSDocumentName returns an attribute KeyValue conforming to the
-// "faas.document.name" semantic conventions. It represents the document
-// name/table subjected to the operation. For example, in Cloud Storage or S3 is
-// the name of the file, and in Cosmos DB the table name.
-func FaaSDocumentName(val string) attribute.KeyValue {
- return FaaSDocumentNameKey.String(val)
-}
-
-// FaaSDocumentTime returns an attribute KeyValue conforming to the
-// "faas.document.time" semantic conventions. It represents a string containing
-// the time when the data was accessed in the [ISO 8601] format expressed in
-// [UTC].
-//
-// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
-// [UTC]: https://www.w3.org/TR/NOTE-datetime
-func FaaSDocumentTime(val string) attribute.KeyValue {
- return FaaSDocumentTimeKey.String(val)
-}
-
-// FaaSInstance returns an attribute KeyValue conforming to the "faas.instance"
-// semantic conventions. It represents the execution environment ID as a string,
-// that will be potentially reused for other invocations to the same
-// function/function version.
-func FaaSInstance(val string) attribute.KeyValue {
- return FaaSInstanceKey.String(val)
-}
-
-// FaaSInvocationID returns an attribute KeyValue conforming to the
-// "faas.invocation_id" semantic conventions. It represents the invocation ID of
-// the current function invocation.
-func FaaSInvocationID(val string) attribute.KeyValue {
- return FaaSInvocationIDKey.String(val)
-}
-
-// FaaSInvokedName returns an attribute KeyValue conforming to the
-// "faas.invoked_name" semantic conventions. It represents the name of the
-// invoked function.
-func FaaSInvokedName(val string) attribute.KeyValue {
- return FaaSInvokedNameKey.String(val)
-}
-
-// FaaSInvokedRegion returns an attribute KeyValue conforming to the
-// "faas.invoked_region" semantic conventions. It represents the cloud region of
-// the invoked function.
-func FaaSInvokedRegion(val string) attribute.KeyValue {
- return FaaSInvokedRegionKey.String(val)
-}
-
-// FaaSMaxMemory returns an attribute KeyValue conforming to the
-// "faas.max_memory" semantic conventions. It represents the amount of memory
-// available to the serverless function converted to Bytes.
-func FaaSMaxMemory(val int) attribute.KeyValue {
- return FaaSMaxMemoryKey.Int(val)
-}
-
-// FaaSName returns an attribute KeyValue conforming to the "faas.name" semantic
-// conventions. It represents the name of the single function that this runtime
-// instance executes.
-func FaaSName(val string) attribute.KeyValue {
- return FaaSNameKey.String(val)
-}
-
-// FaaSTime returns an attribute KeyValue conforming to the "faas.time" semantic
-// conventions. It represents a string containing the function invocation time in
-// the [ISO 8601] format expressed in [UTC].
-//
-// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html
-// [UTC]: https://www.w3.org/TR/NOTE-datetime
-func FaaSTime(val string) attribute.KeyValue {
- return FaaSTimeKey.String(val)
-}
-
-// FaaSVersion returns an attribute KeyValue conforming to the "faas.version"
-// semantic conventions. It represents the immutable version of the function
-// being executed.
-func FaaSVersion(val string) attribute.KeyValue {
- return FaaSVersionKey.String(val)
-}
-
-// Enum values for faas.document.operation
-var (
- // When a new object is created.
- // Stability: development
- FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert")
- // When an object is modified.
- // Stability: development
- FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit")
- // When an object is deleted.
- // Stability: development
- FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete")
-)
-
-// Enum values for faas.invoked_provider
-var (
- // Alibaba Cloud
- // Stability: development
- FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud")
- // Amazon Web Services
- // Stability: development
- FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws")
- // Microsoft Azure
- // Stability: development
- FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure")
- // Google Cloud Platform
- // Stability: development
- FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp")
- // Tencent Cloud
- // Stability: development
- FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud")
-)
-
-// Enum values for faas.trigger
-var (
- // A response to some data source operation such as a database or filesystem
- // read/write
- // Stability: development
- FaaSTriggerDatasource = FaaSTriggerKey.String("datasource")
- // To provide an answer to an inbound HTTP request
- // Stability: development
- FaaSTriggerHTTP = FaaSTriggerKey.String("http")
- // A function is set to be executed when messages are sent to a messaging system
- // Stability: development
- FaaSTriggerPubSub = FaaSTriggerKey.String("pubsub")
- // A function is scheduled to be executed regularly
- // Stability: development
- FaaSTriggerTimer = FaaSTriggerKey.String("timer")
- // If none of the others apply
- // Stability: development
- FaaSTriggerOther = FaaSTriggerKey.String("other")
-)
-
-// Namespace: feature_flag
-const (
- // FeatureFlagContextIDKey is the attribute Key conforming to the
- // "feature_flag.context.id" semantic conventions. It represents the unique
- // identifier for the flag evaluation context. For example, the targeting key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "5157782b-2203-4c80-a857-dbbd5e7761db"
- FeatureFlagContextIDKey = attribute.Key("feature_flag.context.id")
-
- // FeatureFlagErrorMessageKey is the attribute Key conforming to the
- // "feature_flag.error.message" semantic conventions. It represents a message
- // providing more detail about an error that occurred during feature flag
- // evaluation in human-readable form.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "Unexpected input type: string", "The user has exceeded their
- // storage quota"
- FeatureFlagErrorMessageKey = attribute.Key("feature_flag.error.message")
-
- // FeatureFlagKeyKey is the attribute Key conforming to the "feature_flag.key"
- // semantic conventions. It represents the lookup key of the feature flag.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "logo-color"
- FeatureFlagKeyKey = attribute.Key("feature_flag.key")
-
- // FeatureFlagProviderNameKey is the attribute Key conforming to the
- // "feature_flag.provider.name" semantic conventions. It represents the
- // identifies the feature flag provider.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "Flag Manager"
- FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider.name")
-
- // FeatureFlagResultReasonKey is the attribute Key conforming to the
- // "feature_flag.result.reason" semantic conventions. It represents the reason
- // code which shows how a feature flag value was determined.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "static", "targeting_match", "error", "default"
- FeatureFlagResultReasonKey = attribute.Key("feature_flag.result.reason")
-
- // FeatureFlagResultValueKey is the attribute Key conforming to the
- // "feature_flag.result.value" semantic conventions. It represents the evaluated
- // value of the feature flag.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "#ff0000", true, 3
- // Note: With some feature flag providers, feature flag results can be quite
- // large or contain private or sensitive details.
- // Because of this, `feature_flag.result.variant` is often the preferred
- // attribute if it is available.
- //
- // It may be desirable to redact or otherwise limit the size and scope of
- // `feature_flag.result.value` if possible.
- // Because the evaluated flag value is unstructured and may be any type, it is
- // left to the instrumentation author to determine how best to achieve this.
- FeatureFlagResultValueKey = attribute.Key("feature_flag.result.value")
-
- // FeatureFlagResultVariantKey is the attribute Key conforming to the
- // "feature_flag.result.variant" semantic conventions. It represents a semantic
- // identifier for an evaluated flag value.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "red", "true", "on"
- // Note: A semantic identifier, commonly referred to as a variant, provides a
- // means
- // for referring to a value without including the value itself. This can
- // provide additional context for understanding the meaning behind a value.
- // For example, the variant `red` maybe be used for the value `#c05543`.
- FeatureFlagResultVariantKey = attribute.Key("feature_flag.result.variant")
-
- // FeatureFlagSetIDKey is the attribute Key conforming to the
- // "feature_flag.set.id" semantic conventions. It represents the identifier of
- // the [flag set] to which the feature flag belongs.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "proj-1", "ab98sgs", "service1/dev"
- //
- // [flag set]: https://openfeature.dev/specification/glossary/#flag-set
- FeatureFlagSetIDKey = attribute.Key("feature_flag.set.id")
-
- // FeatureFlagVersionKey is the attribute Key conforming to the
- // "feature_flag.version" semantic conventions. It represents the version of the
- // ruleset used during the evaluation. This may be any stable value which
- // uniquely identifies the ruleset.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "1", "01ABCDEF"
- FeatureFlagVersionKey = attribute.Key("feature_flag.version")
-)
-
-// FeatureFlagContextID returns an attribute KeyValue conforming to the
-// "feature_flag.context.id" semantic conventions. It represents the unique
-// identifier for the flag evaluation context. For example, the targeting key.
-func FeatureFlagContextID(val string) attribute.KeyValue {
- return FeatureFlagContextIDKey.String(val)
-}
-
-// FeatureFlagErrorMessage returns an attribute KeyValue conforming to the
-// "feature_flag.error.message" semantic conventions. It represents a message
-// providing more detail about an error that occurred during feature flag
-// evaluation in human-readable form.
-func FeatureFlagErrorMessage(val string) attribute.KeyValue {
- return FeatureFlagErrorMessageKey.String(val)
-}
-
-// FeatureFlagKey returns an attribute KeyValue conforming to the
-// "feature_flag.key" semantic conventions. It represents the lookup key of the
-// feature flag.
-func FeatureFlagKey(val string) attribute.KeyValue {
- return FeatureFlagKeyKey.String(val)
-}
-
-// FeatureFlagProviderName returns an attribute KeyValue conforming to the
-// "feature_flag.provider.name" semantic conventions. It represents the
-// identifies the feature flag provider.
-func FeatureFlagProviderName(val string) attribute.KeyValue {
- return FeatureFlagProviderNameKey.String(val)
-}
-
-// FeatureFlagResultVariant returns an attribute KeyValue conforming to the
-// "feature_flag.result.variant" semantic conventions. It represents a semantic
-// identifier for an evaluated flag value.
-func FeatureFlagResultVariant(val string) attribute.KeyValue {
- return FeatureFlagResultVariantKey.String(val)
-}
-
-// FeatureFlagSetID returns an attribute KeyValue conforming to the
-// "feature_flag.set.id" semantic conventions. It represents the identifier of
-// the [flag set] to which the feature flag belongs.
-//
-// [flag set]: https://openfeature.dev/specification/glossary/#flag-set
-func FeatureFlagSetID(val string) attribute.KeyValue {
- return FeatureFlagSetIDKey.String(val)
-}
-
-// FeatureFlagVersion returns an attribute KeyValue conforming to the
-// "feature_flag.version" semantic conventions. It represents the version of the
-// ruleset used during the evaluation. This may be any stable value which
-// uniquely identifies the ruleset.
-func FeatureFlagVersion(val string) attribute.KeyValue {
- return FeatureFlagVersionKey.String(val)
-}
-
-// Enum values for feature_flag.result.reason
-var (
- // The resolved value is static (no dynamic evaluation).
- // Stability: release_candidate
- FeatureFlagResultReasonStatic = FeatureFlagResultReasonKey.String("static")
- // The resolved value fell back to a pre-configured value (no dynamic evaluation
- // occurred or dynamic evaluation yielded no result).
- // Stability: release_candidate
- FeatureFlagResultReasonDefault = FeatureFlagResultReasonKey.String("default")
- // The resolved value was the result of a dynamic evaluation, such as a rule or
- // specific user-targeting.
- // Stability: release_candidate
- FeatureFlagResultReasonTargetingMatch = FeatureFlagResultReasonKey.String("targeting_match")
- // The resolved value was the result of pseudorandom assignment.
- // Stability: release_candidate
- FeatureFlagResultReasonSplit = FeatureFlagResultReasonKey.String("split")
- // The resolved value was retrieved from cache.
- // Stability: release_candidate
- FeatureFlagResultReasonCached = FeatureFlagResultReasonKey.String("cached")
- // The resolved value was the result of the flag being disabled in the
- // management system.
- // Stability: release_candidate
- FeatureFlagResultReasonDisabled = FeatureFlagResultReasonKey.String("disabled")
- // The reason for the resolved value could not be determined.
- // Stability: release_candidate
- FeatureFlagResultReasonUnknown = FeatureFlagResultReasonKey.String("unknown")
- // The resolved value is non-authoritative or possibly out of date
- // Stability: release_candidate
- FeatureFlagResultReasonStale = FeatureFlagResultReasonKey.String("stale")
- // The resolved value was the result of an error.
- // Stability: release_candidate
- FeatureFlagResultReasonError = FeatureFlagResultReasonKey.String("error")
-)
-
-// Namespace: file
-const (
- // FileAccessedKey is the attribute Key conforming to the "file.accessed"
- // semantic conventions. It represents the time when the file was last accessed,
- // in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: This attribute might not be supported by some file systems β NFS,
- // FAT32, in embedded OS, etc.
- FileAccessedKey = attribute.Key("file.accessed")
-
- // FileAttributesKey is the attribute Key conforming to the "file.attributes"
- // semantic conventions. It represents the array of file attributes.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "readonly", "hidden"
- // Note: Attributes names depend on the OS or file system. Hereβs a
- // non-exhaustive list of values expected for this attribute: `archive`,
- // `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`,
- // `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`,
- // `write`.
- FileAttributesKey = attribute.Key("file.attributes")
-
- // FileChangedKey is the attribute Key conforming to the "file.changed" semantic
- // conventions. It represents the time when the file attributes or metadata was
- // last changed, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: `file.changed` captures the time when any of the file's properties or
- // attributes (including the content) are changed, while `file.modified`
- // captures the timestamp when the file content is modified.
- FileChangedKey = attribute.Key("file.changed")
-
- // FileCreatedKey is the attribute Key conforming to the "file.created" semantic
- // conventions. It represents the time when the file was created, in ISO 8601
- // format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- // Note: This attribute might not be supported by some file systems β NFS,
- // FAT32, in embedded OS, etc.
- FileCreatedKey = attribute.Key("file.created")
-
- // FileDirectoryKey is the attribute Key conforming to the "file.directory"
- // semantic conventions. It represents the directory where the file is located.
- // It should include the drive letter, when appropriate.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/home/user", "C:\Program Files\MyApp"
- FileDirectoryKey = attribute.Key("file.directory")
-
- // FileExtensionKey is the attribute Key conforming to the "file.extension"
- // semantic conventions. It represents the file extension, excluding the leading
- // dot.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "png", "gz"
- // Note: When the file name has multiple extensions (example.tar.gz), only the
- // last one should be captured ("gz", not "tar.gz").
- FileExtensionKey = attribute.Key("file.extension")
-
- // FileForkNameKey is the attribute Key conforming to the "file.fork_name"
- // semantic conventions. It represents the name of the fork. A fork is
- // additional data associated with a filesystem object.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Zone.Identifier"
- // Note: On Linux, a resource fork is used to store additional data with a
- // filesystem object. A file always has at least one fork for the data portion,
- // and additional forks may exist.
- // On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default
- // data stream for a file is just called $DATA. Zone.Identifier is commonly used
- // by Windows to track contents downloaded from the Internet. An ADS is
- // typically of the form: C:\path\to\filename.extension:some_fork_name, and
- // some_fork_name is the value that should populate `fork_name`.
- // `filename.extension` should populate `file.name`, and `extension` should
- // populate `file.extension`. The full path, `file.path`, will include the fork
- // name.
- FileForkNameKey = attribute.Key("file.fork_name")
-
- // FileGroupIDKey is the attribute Key conforming to the "file.group.id"
- // semantic conventions. It represents the primary Group ID (GID) of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1000"
- FileGroupIDKey = attribute.Key("file.group.id")
-
- // FileGroupNameKey is the attribute Key conforming to the "file.group.name"
- // semantic conventions. It represents the primary group name of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "users"
- FileGroupNameKey = attribute.Key("file.group.name")
-
- // FileInodeKey is the attribute Key conforming to the "file.inode" semantic
- // conventions. It represents the inode representing the file in the filesystem.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "256383"
- FileInodeKey = attribute.Key("file.inode")
-
- // FileModeKey is the attribute Key conforming to the "file.mode" semantic
- // conventions. It represents the mode of the file in octal representation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0640"
- FileModeKey = attribute.Key("file.mode")
-
- // FileModifiedKey is the attribute Key conforming to the "file.modified"
- // semantic conventions. It represents the time when the file content was last
- // modified, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T12:00:00Z"
- FileModifiedKey = attribute.Key("file.modified")
-
- // FileNameKey is the attribute Key conforming to the "file.name" semantic
- // conventions. It represents the name of the file including the extension,
- // without the directory.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "example.png"
- FileNameKey = attribute.Key("file.name")
-
- // FileOwnerIDKey is the attribute Key conforming to the "file.owner.id"
- // semantic conventions. It represents the user ID (UID) or security identifier
- // (SID) of the file owner.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1000"
- FileOwnerIDKey = attribute.Key("file.owner.id")
-
- // FileOwnerNameKey is the attribute Key conforming to the "file.owner.name"
- // semantic conventions. It represents the username of the file owner.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- FileOwnerNameKey = attribute.Key("file.owner.name")
-
- // FilePathKey is the attribute Key conforming to the "file.path" semantic
- // conventions. It represents the full path to the file, including the file
- // name. It should include the drive letter, when appropriate.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/home/alice/example.png", "C:\Program Files\MyApp\myapp.exe"
- FilePathKey = attribute.Key("file.path")
-
- // FileSizeKey is the attribute Key conforming to the "file.size" semantic
- // conventions. It represents the file size in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- FileSizeKey = attribute.Key("file.size")
-
- // FileSymbolicLinkTargetPathKey is the attribute Key conforming to the
- // "file.symbolic_link.target_path" semantic conventions. It represents the path
- // to the target of a symbolic link.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/usr/bin/python3"
- // Note: This attribute is only applicable to symbolic links.
- FileSymbolicLinkTargetPathKey = attribute.Key("file.symbolic_link.target_path")
-)
-
-// FileAccessed returns an attribute KeyValue conforming to the "file.accessed"
-// semantic conventions. It represents the time when the file was last accessed,
-// in ISO 8601 format.
-func FileAccessed(val string) attribute.KeyValue {
- return FileAccessedKey.String(val)
-}
-
-// FileAttributes returns an attribute KeyValue conforming to the
-// "file.attributes" semantic conventions. It represents the array of file
-// attributes.
-func FileAttributes(val ...string) attribute.KeyValue {
- return FileAttributesKey.StringSlice(val)
-}
-
-// FileChanged returns an attribute KeyValue conforming to the "file.changed"
-// semantic conventions. It represents the time when the file attributes or
-// metadata was last changed, in ISO 8601 format.
-func FileChanged(val string) attribute.KeyValue {
- return FileChangedKey.String(val)
-}
-
-// FileCreated returns an attribute KeyValue conforming to the "file.created"
-// semantic conventions. It represents the time when the file was created, in ISO
-// 8601 format.
-func FileCreated(val string) attribute.KeyValue {
- return FileCreatedKey.String(val)
-}
-
-// FileDirectory returns an attribute KeyValue conforming to the "file.directory"
-// semantic conventions. It represents the directory where the file is located.
-// It should include the drive letter, when appropriate.
-func FileDirectory(val string) attribute.KeyValue {
- return FileDirectoryKey.String(val)
-}
-
-// FileExtension returns an attribute KeyValue conforming to the "file.extension"
-// semantic conventions. It represents the file extension, excluding the leading
-// dot.
-func FileExtension(val string) attribute.KeyValue {
- return FileExtensionKey.String(val)
-}
-
-// FileForkName returns an attribute KeyValue conforming to the "file.fork_name"
-// semantic conventions. It represents the name of the fork. A fork is additional
-// data associated with a filesystem object.
-func FileForkName(val string) attribute.KeyValue {
- return FileForkNameKey.String(val)
-}
-
-// FileGroupID returns an attribute KeyValue conforming to the "file.group.id"
-// semantic conventions. It represents the primary Group ID (GID) of the file.
-func FileGroupID(val string) attribute.KeyValue {
- return FileGroupIDKey.String(val)
-}
-
-// FileGroupName returns an attribute KeyValue conforming to the
-// "file.group.name" semantic conventions. It represents the primary group name
-// of the file.
-func FileGroupName(val string) attribute.KeyValue {
- return FileGroupNameKey.String(val)
-}
-
-// FileInode returns an attribute KeyValue conforming to the "file.inode"
-// semantic conventions. It represents the inode representing the file in the
-// filesystem.
-func FileInode(val string) attribute.KeyValue {
- return FileInodeKey.String(val)
-}
-
-// FileMode returns an attribute KeyValue conforming to the "file.mode" semantic
-// conventions. It represents the mode of the file in octal representation.
-func FileMode(val string) attribute.KeyValue {
- return FileModeKey.String(val)
-}
-
-// FileModified returns an attribute KeyValue conforming to the "file.modified"
-// semantic conventions. It represents the time when the file content was last
-// modified, in ISO 8601 format.
-func FileModified(val string) attribute.KeyValue {
- return FileModifiedKey.String(val)
-}
-
-// FileName returns an attribute KeyValue conforming to the "file.name" semantic
-// conventions. It represents the name of the file including the extension,
-// without the directory.
-func FileName(val string) attribute.KeyValue {
- return FileNameKey.String(val)
-}
-
-// FileOwnerID returns an attribute KeyValue conforming to the "file.owner.id"
-// semantic conventions. It represents the user ID (UID) or security identifier
-// (SID) of the file owner.
-func FileOwnerID(val string) attribute.KeyValue {
- return FileOwnerIDKey.String(val)
-}
-
-// FileOwnerName returns an attribute KeyValue conforming to the
-// "file.owner.name" semantic conventions. It represents the username of the file
-// owner.
-func FileOwnerName(val string) attribute.KeyValue {
- return FileOwnerNameKey.String(val)
-}
-
-// FilePath returns an attribute KeyValue conforming to the "file.path" semantic
-// conventions. It represents the full path to the file, including the file name.
-// It should include the drive letter, when appropriate.
-func FilePath(val string) attribute.KeyValue {
- return FilePathKey.String(val)
-}
-
-// FileSize returns an attribute KeyValue conforming to the "file.size" semantic
-// conventions. It represents the file size in bytes.
-func FileSize(val int) attribute.KeyValue {
- return FileSizeKey.Int(val)
-}
-
-// FileSymbolicLinkTargetPath returns an attribute KeyValue conforming to the
-// "file.symbolic_link.target_path" semantic conventions. It represents the path
-// to the target of a symbolic link.
-func FileSymbolicLinkTargetPath(val string) attribute.KeyValue {
- return FileSymbolicLinkTargetPathKey.String(val)
-}
-
-// Namespace: gcp
-const (
- // GCPAppHubApplicationContainerKey is the attribute Key conforming to the
- // "gcp.apphub.application.container" semantic conventions. It represents the
- // container within GCP where the AppHub application is defined.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "projects/my-container-project"
- GCPAppHubApplicationContainerKey = attribute.Key("gcp.apphub.application.container")
-
- // GCPAppHubApplicationIDKey is the attribute Key conforming to the
- // "gcp.apphub.application.id" semantic conventions. It represents the name of
- // the application as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-application"
- GCPAppHubApplicationIDKey = attribute.Key("gcp.apphub.application.id")
-
- // GCPAppHubApplicationLocationKey is the attribute Key conforming to the
- // "gcp.apphub.application.location" semantic conventions. It represents the GCP
- // zone or region where the application is defined.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1"
- GCPAppHubApplicationLocationKey = attribute.Key("gcp.apphub.application.location")
-
- // GCPAppHubServiceCriticalityTypeKey is the attribute Key conforming to the
- // "gcp.apphub.service.criticality_type" semantic conventions. It represents the
- // criticality of a service indicates its importance to the business.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: [See AppHub type enum]
- //
- // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type
- GCPAppHubServiceCriticalityTypeKey = attribute.Key("gcp.apphub.service.criticality_type")
-
- // GCPAppHubServiceEnvironmentTypeKey is the attribute Key conforming to the
- // "gcp.apphub.service.environment_type" semantic conventions. It represents the
- // environment of a service is the stage of a software lifecycle.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: [See AppHub environment type]
- //
- // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1
- GCPAppHubServiceEnvironmentTypeKey = attribute.Key("gcp.apphub.service.environment_type")
-
- // GCPAppHubServiceIDKey is the attribute Key conforming to the
- // "gcp.apphub.service.id" semantic conventions. It represents the name of the
- // service as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-service"
- GCPAppHubServiceIDKey = attribute.Key("gcp.apphub.service.id")
-
- // GCPAppHubWorkloadCriticalityTypeKey is the attribute Key conforming to the
- // "gcp.apphub.workload.criticality_type" semantic conventions. It represents
- // the criticality of a workload indicates its importance to the business.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: [See AppHub type enum]
- //
- // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type
- GCPAppHubWorkloadCriticalityTypeKey = attribute.Key("gcp.apphub.workload.criticality_type")
-
- // GCPAppHubWorkloadEnvironmentTypeKey is the attribute Key conforming to the
- // "gcp.apphub.workload.environment_type" semantic conventions. It represents
- // the environment of a workload is the stage of a software lifecycle.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: [See AppHub environment type]
- //
- // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1
- GCPAppHubWorkloadEnvironmentTypeKey = attribute.Key("gcp.apphub.workload.environment_type")
-
- // GCPAppHubWorkloadIDKey is the attribute Key conforming to the
- // "gcp.apphub.workload.id" semantic conventions. It represents the name of the
- // workload as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-workload"
- GCPAppHubWorkloadIDKey = attribute.Key("gcp.apphub.workload.id")
-
- // GCPAppHubDestinationApplicationContainerKey is the attribute Key conforming
- // to the "gcp.apphub_destination.application.container" semantic conventions.
- // It represents the container within GCP where the AppHub destination
- // application is defined.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "projects/my-container-project"
- GCPAppHubDestinationApplicationContainerKey = attribute.Key("gcp.apphub_destination.application.container")
-
- // GCPAppHubDestinationApplicationIDKey is the attribute Key conforming to the
- // "gcp.apphub_destination.application.id" semantic conventions. It represents
- // the name of the destination application as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-application"
- GCPAppHubDestinationApplicationIDKey = attribute.Key("gcp.apphub_destination.application.id")
-
- // GCPAppHubDestinationApplicationLocationKey is the attribute Key conforming to
- // the "gcp.apphub_destination.application.location" semantic conventions. It
- // represents the GCP zone or region where the destination application is
- // defined.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1"
- GCPAppHubDestinationApplicationLocationKey = attribute.Key("gcp.apphub_destination.application.location")
-
- // GCPAppHubDestinationServiceCriticalityTypeKey is the attribute Key conforming
- // to the "gcp.apphub_destination.service.criticality_type" semantic
- // conventions. It represents the criticality of a destination workload
- // indicates its importance to the business as specified in [AppHub type enum].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type
- GCPAppHubDestinationServiceCriticalityTypeKey = attribute.Key("gcp.apphub_destination.service.criticality_type")
-
- // GCPAppHubDestinationServiceEnvironmentTypeKey is the attribute Key conforming
- // to the "gcp.apphub_destination.service.environment_type" semantic
- // conventions. It represents the software lifecycle stage of a destination
- // service as defined [AppHub environment type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1
- GCPAppHubDestinationServiceEnvironmentTypeKey = attribute.Key("gcp.apphub_destination.service.environment_type")
-
- // GCPAppHubDestinationServiceIDKey is the attribute Key conforming to the
- // "gcp.apphub_destination.service.id" semantic conventions. It represents the
- // name of the destination service as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-service"
- GCPAppHubDestinationServiceIDKey = attribute.Key("gcp.apphub_destination.service.id")
-
- // GCPAppHubDestinationWorkloadCriticalityTypeKey is the attribute Key
- // conforming to the "gcp.apphub_destination.workload.criticality_type" semantic
- // conventions. It represents the criticality of a destination workload
- // indicates its importance to the business as specified in [AppHub type enum].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type
- GCPAppHubDestinationWorkloadCriticalityTypeKey = attribute.Key("gcp.apphub_destination.workload.criticality_type")
-
- // GCPAppHubDestinationWorkloadEnvironmentTypeKey is the attribute Key
- // conforming to the "gcp.apphub_destination.workload.environment_type" semantic
- // conventions. It represents the environment of a destination workload is the
- // stage of a software lifecycle as provided in the [AppHub environment type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1
- GCPAppHubDestinationWorkloadEnvironmentTypeKey = attribute.Key("gcp.apphub_destination.workload.environment_type")
-
- // GCPAppHubDestinationWorkloadIDKey is the attribute Key conforming to the
- // "gcp.apphub_destination.workload.id" semantic conventions. It represents the
- // name of the destination workload as configured in AppHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-workload"
- GCPAppHubDestinationWorkloadIDKey = attribute.Key("gcp.apphub_destination.workload.id")
-
- // GCPClientServiceKey is the attribute Key conforming to the
- // "gcp.client.service" semantic conventions. It represents the identifies the
- // Google Cloud service for which the official client library is intended.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "appengine", "run", "firestore", "alloydb", "spanner"
- // Note: Intended to be a stable identifier for Google Cloud client libraries
- // that is uniform across implementation languages. The value should be derived
- // from the canonical service domain for the service; for example,
- // 'foo.googleapis.com' should result in a value of 'foo'.
- GCPClientServiceKey = attribute.Key("gcp.client.service")
-
- // GCPCloudRunJobExecutionKey is the attribute Key conforming to the
- // "gcp.cloud_run.job.execution" semantic conventions. It represents the name of
- // the Cloud Run [execution] being run for the Job, as set by the
- // [`CLOUD_RUN_EXECUTION`] environment variable.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "job-name-xxxx", "sample-job-mdw84"
- //
- // [execution]: https://cloud.google.com/run/docs/managing/job-executions
- // [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
- GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution")
-
- // GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the
- // "gcp.cloud_run.job.task_index" semantic conventions. It represents the index
- // for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`]
- // environment variable.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 1
- //
- // [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
- GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index")
-
- // GCPGCEInstanceHostnameKey is the attribute Key conforming to the
- // "gcp.gce.instance.hostname" semantic conventions. It represents the hostname
- // of a GCE instance. This is the full value of the default or [custom hostname]
- // .
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-host1234.example.com",
- // "sample-vm.us-west1-b.c.my-project.internal"
- //
- // [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm
- GCPGCEInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname")
-
- // GCPGCEInstanceNameKey is the attribute Key conforming to the
- // "gcp.gce.instance.name" semantic conventions. It represents the instance name
- // of a GCE instance. This is the value provided by `host.name`, the visible
- // name of the instance in the Cloud Console UI, and the prefix for the default
- // hostname of the instance as defined by the [default internal DNS name].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "instance-1", "my-vm-name"
- //
- // [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names
- GCPGCEInstanceNameKey = attribute.Key("gcp.gce.instance.name")
-
- // GCPGCEInstanceGroupManagerNameKey is the attribute Key conforming to the
- // "gcp.gce.instance_group_manager.name" semantic conventions. It represents the
- // name of the Instance Group Manager (IGM) that manages this VM, if any.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "web-igm", "my-managed-group"
- GCPGCEInstanceGroupManagerNameKey = attribute.Key("gcp.gce.instance_group_manager.name")
-
- // GCPGCEInstanceGroupManagerRegionKey is the attribute Key conforming to the
- // "gcp.gce.instance_group_manager.region" semantic conventions. It represents
- // the region of a **regional** Instance Group Manager (e.g., `us-central1`).
- // Set this **only** when the IGM is regional.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1", "europe-west1"
- GCPGCEInstanceGroupManagerRegionKey = attribute.Key("gcp.gce.instance_group_manager.region")
-
- // GCPGCEInstanceGroupManagerZoneKey is the attribute Key conforming to the
- // "gcp.gce.instance_group_manager.zone" semantic conventions. It represents the
- // zone of a **zonal** Instance Group Manager (e.g., `us-central1-a`). Set this
- // **only** when the IGM is zonal.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-central1-a", "europe-west1-b"
- GCPGCEInstanceGroupManagerZoneKey = attribute.Key("gcp.gce.instance_group_manager.zone")
-)
-
-// GCPAppHubApplicationContainer returns an attribute KeyValue conforming to the
-// "gcp.apphub.application.container" semantic conventions. It represents the
-// container within GCP where the AppHub application is defined.
-func GCPAppHubApplicationContainer(val string) attribute.KeyValue {
- return GCPAppHubApplicationContainerKey.String(val)
-}
-
-// GCPAppHubApplicationID returns an attribute KeyValue conforming to the
-// "gcp.apphub.application.id" semantic conventions. It represents the name of
-// the application as configured in AppHub.
-func GCPAppHubApplicationID(val string) attribute.KeyValue {
- return GCPAppHubApplicationIDKey.String(val)
-}
-
-// GCPAppHubApplicationLocation returns an attribute KeyValue conforming to the
-// "gcp.apphub.application.location" semantic conventions. It represents the GCP
-// zone or region where the application is defined.
-func GCPAppHubApplicationLocation(val string) attribute.KeyValue {
- return GCPAppHubApplicationLocationKey.String(val)
-}
-
-// GCPAppHubServiceID returns an attribute KeyValue conforming to the
-// "gcp.apphub.service.id" semantic conventions. It represents the name of the
-// service as configured in AppHub.
-func GCPAppHubServiceID(val string) attribute.KeyValue {
- return GCPAppHubServiceIDKey.String(val)
-}
-
-// GCPAppHubWorkloadID returns an attribute KeyValue conforming to the
-// "gcp.apphub.workload.id" semantic conventions. It represents the name of the
-// workload as configured in AppHub.
-func GCPAppHubWorkloadID(val string) attribute.KeyValue {
- return GCPAppHubWorkloadIDKey.String(val)
-}
-
-// GCPAppHubDestinationApplicationContainer returns an attribute KeyValue
-// conforming to the "gcp.apphub_destination.application.container" semantic
-// conventions. It represents the container within GCP where the AppHub
-// destination application is defined.
-func GCPAppHubDestinationApplicationContainer(val string) attribute.KeyValue {
- return GCPAppHubDestinationApplicationContainerKey.String(val)
-}
-
-// GCPAppHubDestinationApplicationID returns an attribute KeyValue conforming to
-// the "gcp.apphub_destination.application.id" semantic conventions. It
-// represents the name of the destination application as configured in AppHub.
-func GCPAppHubDestinationApplicationID(val string) attribute.KeyValue {
- return GCPAppHubDestinationApplicationIDKey.String(val)
-}
-
-// GCPAppHubDestinationApplicationLocation returns an attribute KeyValue
-// conforming to the "gcp.apphub_destination.application.location" semantic
-// conventions. It represents the GCP zone or region where the destination
-// application is defined.
-func GCPAppHubDestinationApplicationLocation(val string) attribute.KeyValue {
- return GCPAppHubDestinationApplicationLocationKey.String(val)
-}
-
-// GCPAppHubDestinationServiceID returns an attribute KeyValue conforming to the
-// "gcp.apphub_destination.service.id" semantic conventions. It represents the
-// name of the destination service as configured in AppHub.
-func GCPAppHubDestinationServiceID(val string) attribute.KeyValue {
- return GCPAppHubDestinationServiceIDKey.String(val)
-}
-
-// GCPAppHubDestinationWorkloadID returns an attribute KeyValue conforming to the
-// "gcp.apphub_destination.workload.id" semantic conventions. It represents the
-// name of the destination workload as configured in AppHub.
-func GCPAppHubDestinationWorkloadID(val string) attribute.KeyValue {
- return GCPAppHubDestinationWorkloadIDKey.String(val)
-}
-
-// GCPClientService returns an attribute KeyValue conforming to the
-// "gcp.client.service" semantic conventions. It represents the identifies the
-// Google Cloud service for which the official client library is intended.
-func GCPClientService(val string) attribute.KeyValue {
- return GCPClientServiceKey.String(val)
-}
-
-// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.execution" semantic conventions. It represents the name of
-// the Cloud Run [execution] being run for the Job, as set by the
-// [`CLOUD_RUN_EXECUTION`] environment variable.
-//
-// [execution]: https://cloud.google.com/run/docs/managing/job-executions
-// [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
-func GCPCloudRunJobExecution(val string) attribute.KeyValue {
- return GCPCloudRunJobExecutionKey.String(val)
-}
-
-// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index
-// for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`]
-// environment variable.
-//
-// [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars
-func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue {
- return GCPCloudRunJobTaskIndexKey.Int(val)
-}
-
-// GCPGCEInstanceHostname returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname
-// of a GCE instance. This is the full value of the default or [custom hostname]
-// .
-//
-// [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm
-func GCPGCEInstanceHostname(val string) attribute.KeyValue {
- return GCPGCEInstanceHostnameKey.String(val)
-}
-
-// GCPGCEInstanceName returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.name" semantic conventions. It represents the instance name
-// of a GCE instance. This is the value provided by `host.name`, the visible name
-// of the instance in the Cloud Console UI, and the prefix for the default
-// hostname of the instance as defined by the [default internal DNS name].
-//
-// [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names
-func GCPGCEInstanceName(val string) attribute.KeyValue {
- return GCPGCEInstanceNameKey.String(val)
-}
-
-// GCPGCEInstanceGroupManagerName returns an attribute KeyValue conforming to the
-// "gcp.gce.instance_group_manager.name" semantic conventions. It represents the
-// name of the Instance Group Manager (IGM) that manages this VM, if any.
-func GCPGCEInstanceGroupManagerName(val string) attribute.KeyValue {
- return GCPGCEInstanceGroupManagerNameKey.String(val)
-}
-
-// GCPGCEInstanceGroupManagerRegion returns an attribute KeyValue conforming to
-// the "gcp.gce.instance_group_manager.region" semantic conventions. It
-// represents the region of a **regional** Instance Group Manager (e.g.,
-// `us-central1`). Set this **only** when the IGM is regional.
-func GCPGCEInstanceGroupManagerRegion(val string) attribute.KeyValue {
- return GCPGCEInstanceGroupManagerRegionKey.String(val)
-}
-
-// GCPGCEInstanceGroupManagerZone returns an attribute KeyValue conforming to the
-// "gcp.gce.instance_group_manager.zone" semantic conventions. It represents the
-// zone of a **zonal** Instance Group Manager (e.g., `us-central1-a`). Set this
-// **only** when the IGM is zonal.
-func GCPGCEInstanceGroupManagerZone(val string) attribute.KeyValue {
- return GCPGCEInstanceGroupManagerZoneKey.String(val)
-}
-
-// Enum values for gcp.apphub.service.criticality_type
-var (
- // Mission critical service.
- // Stability: development
- GCPAppHubServiceCriticalityTypeMissionCritical = GCPAppHubServiceCriticalityTypeKey.String("MISSION_CRITICAL")
- // High impact.
- // Stability: development
- GCPAppHubServiceCriticalityTypeHigh = GCPAppHubServiceCriticalityTypeKey.String("HIGH")
- // Medium impact.
- // Stability: development
- GCPAppHubServiceCriticalityTypeMedium = GCPAppHubServiceCriticalityTypeKey.String("MEDIUM")
- // Low impact.
- // Stability: development
- GCPAppHubServiceCriticalityTypeLow = GCPAppHubServiceCriticalityTypeKey.String("LOW")
-)
-
-// Enum values for gcp.apphub.service.environment_type
-var (
- // Production environment.
- // Stability: development
- GCPAppHubServiceEnvironmentTypeProduction = GCPAppHubServiceEnvironmentTypeKey.String("PRODUCTION")
- // Staging environment.
- // Stability: development
- GCPAppHubServiceEnvironmentTypeStaging = GCPAppHubServiceEnvironmentTypeKey.String("STAGING")
- // Test environment.
- // Stability: development
- GCPAppHubServiceEnvironmentTypeTest = GCPAppHubServiceEnvironmentTypeKey.String("TEST")
- // Development environment.
- // Stability: development
- GCPAppHubServiceEnvironmentTypeDevelopment = GCPAppHubServiceEnvironmentTypeKey.String("DEVELOPMENT")
-)
-
-// Enum values for gcp.apphub.workload.criticality_type
-var (
- // Mission critical service.
- // Stability: development
- GCPAppHubWorkloadCriticalityTypeMissionCritical = GCPAppHubWorkloadCriticalityTypeKey.String("MISSION_CRITICAL")
- // High impact.
- // Stability: development
- GCPAppHubWorkloadCriticalityTypeHigh = GCPAppHubWorkloadCriticalityTypeKey.String("HIGH")
- // Medium impact.
- // Stability: development
- GCPAppHubWorkloadCriticalityTypeMedium = GCPAppHubWorkloadCriticalityTypeKey.String("MEDIUM")
- // Low impact.
- // Stability: development
- GCPAppHubWorkloadCriticalityTypeLow = GCPAppHubWorkloadCriticalityTypeKey.String("LOW")
-)
-
-// Enum values for gcp.apphub.workload.environment_type
-var (
- // Production environment.
- // Stability: development
- GCPAppHubWorkloadEnvironmentTypeProduction = GCPAppHubWorkloadEnvironmentTypeKey.String("PRODUCTION")
- // Staging environment.
- // Stability: development
- GCPAppHubWorkloadEnvironmentTypeStaging = GCPAppHubWorkloadEnvironmentTypeKey.String("STAGING")
- // Test environment.
- // Stability: development
- GCPAppHubWorkloadEnvironmentTypeTest = GCPAppHubWorkloadEnvironmentTypeKey.String("TEST")
- // Development environment.
- // Stability: development
- GCPAppHubWorkloadEnvironmentTypeDevelopment = GCPAppHubWorkloadEnvironmentTypeKey.String("DEVELOPMENT")
-)
-
-// Enum values for gcp.apphub_destination.service.criticality_type
-var (
- // Mission critical service.
- // Stability: development
- GCPAppHubDestinationServiceCriticalityTypeMissionCritical = GCPAppHubDestinationServiceCriticalityTypeKey.String("MISSION_CRITICAL")
- // High impact.
- // Stability: development
- GCPAppHubDestinationServiceCriticalityTypeHigh = GCPAppHubDestinationServiceCriticalityTypeKey.String("HIGH")
- // Medium impact.
- // Stability: development
- GCPAppHubDestinationServiceCriticalityTypeMedium = GCPAppHubDestinationServiceCriticalityTypeKey.String("MEDIUM")
- // Low impact.
- // Stability: development
- GCPAppHubDestinationServiceCriticalityTypeLow = GCPAppHubDestinationServiceCriticalityTypeKey.String("LOW")
-)
-
-// Enum values for gcp.apphub_destination.service.environment_type
-var (
- // Production environment.
- // Stability: development
- GCPAppHubDestinationServiceEnvironmentTypeProduction = GCPAppHubDestinationServiceEnvironmentTypeKey.String("PRODUCTION")
- // Staging environment.
- // Stability: development
- GCPAppHubDestinationServiceEnvironmentTypeStaging = GCPAppHubDestinationServiceEnvironmentTypeKey.String("STAGING")
- // Test environment.
- // Stability: development
- GCPAppHubDestinationServiceEnvironmentTypeTest = GCPAppHubDestinationServiceEnvironmentTypeKey.String("TEST")
- // Development environment.
- // Stability: development
- GCPAppHubDestinationServiceEnvironmentTypeDevelopment = GCPAppHubDestinationServiceEnvironmentTypeKey.String("DEVELOPMENT")
-)
-
-// Enum values for gcp.apphub_destination.workload.criticality_type
-var (
- // Mission critical service.
- // Stability: development
- GCPAppHubDestinationWorkloadCriticalityTypeMissionCritical = GCPAppHubDestinationWorkloadCriticalityTypeKey.String("MISSION_CRITICAL")
- // High impact.
- // Stability: development
- GCPAppHubDestinationWorkloadCriticalityTypeHigh = GCPAppHubDestinationWorkloadCriticalityTypeKey.String("HIGH")
- // Medium impact.
- // Stability: development
- GCPAppHubDestinationWorkloadCriticalityTypeMedium = GCPAppHubDestinationWorkloadCriticalityTypeKey.String("MEDIUM")
- // Low impact.
- // Stability: development
- GCPAppHubDestinationWorkloadCriticalityTypeLow = GCPAppHubDestinationWorkloadCriticalityTypeKey.String("LOW")
-)
-
-// Enum values for gcp.apphub_destination.workload.environment_type
-var (
- // Production environment.
- // Stability: development
- GCPAppHubDestinationWorkloadEnvironmentTypeProduction = GCPAppHubDestinationWorkloadEnvironmentTypeKey.String("PRODUCTION")
- // Staging environment.
- // Stability: development
- GCPAppHubDestinationWorkloadEnvironmentTypeStaging = GCPAppHubDestinationWorkloadEnvironmentTypeKey.String("STAGING")
- // Test environment.
- // Stability: development
- GCPAppHubDestinationWorkloadEnvironmentTypeTest = GCPAppHubDestinationWorkloadEnvironmentTypeKey.String("TEST")
- // Development environment.
- // Stability: development
- GCPAppHubDestinationWorkloadEnvironmentTypeDevelopment = GCPAppHubDestinationWorkloadEnvironmentTypeKey.String("DEVELOPMENT")
-)
-
-// Namespace: gen_ai
-const (
- // GenAIAgentDescriptionKey is the attribute Key conforming to the
- // "gen_ai.agent.description" semantic conventions. It represents the free-form
- // description of the GenAI agent provided by the application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Helps with math problems", "Generates fiction stories"
- GenAIAgentDescriptionKey = attribute.Key("gen_ai.agent.description")
-
- // GenAIAgentIDKey is the attribute Key conforming to the "gen_ai.agent.id"
- // semantic conventions. It represents the unique identifier of the GenAI agent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "asst_5j66UpCpwteGg4YSxUnt7lPY"
- GenAIAgentIDKey = attribute.Key("gen_ai.agent.id")
-
- // GenAIAgentNameKey is the attribute Key conforming to the "gen_ai.agent.name"
- // semantic conventions. It represents the human-readable name of the GenAI
- // agent provided by the application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Math Tutor", "Fiction Writer"
- GenAIAgentNameKey = attribute.Key("gen_ai.agent.name")
-
- // GenAIAgentVersionKey is the attribute Key conforming to the
- // "gen_ai.agent.version" semantic conventions. It represents the version of the
- // GenAI agent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.0.0", "2025-05-01"
- GenAIAgentVersionKey = attribute.Key("gen_ai.agent.version")
-
- // GenAIConversationIDKey is the attribute Key conforming to the
- // "gen_ai.conversation.id" semantic conventions. It represents the unique
- // identifier for a conversation (session, thread), used to store and correlate
- // messages within this conversation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "conv_5j66UpCpwteGg4YSxUnt7lPY"
- GenAIConversationIDKey = attribute.Key("gen_ai.conversation.id")
-
- // GenAIDataSourceIDKey is the attribute Key conforming to the
- // "gen_ai.data_source.id" semantic conventions. It represents the data source
- // identifier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "H7STPQYOND"
- // Note: Data sources are used by AI agents and RAG applications to store
- // grounding data. A data source may be an external database, object store,
- // document collection, website, or any other storage system used by the GenAI
- // agent or application. The `gen_ai.data_source.id` SHOULD match the identifier
- // used by the GenAI system rather than a name specific to the external storage,
- // such as a database or object store. Semantic conventions referencing
- // `gen_ai.data_source.id` MAY also leverage additional attributes, such as
- // `db.*`, to further identify and describe the data source.
- GenAIDataSourceIDKey = attribute.Key("gen_ai.data_source.id")
-
- // GenAIEmbeddingsDimensionCountKey is the attribute Key conforming to the
- // "gen_ai.embeddings.dimension.count" semantic conventions. It represents the
- // number of dimensions the resulting output embeddings should have.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 512, 1024
- GenAIEmbeddingsDimensionCountKey = attribute.Key("gen_ai.embeddings.dimension.count")
-
- // GenAIEvaluationExplanationKey is the attribute Key conforming to the
- // "gen_ai.evaluation.explanation" semantic conventions. It represents a
- // free-form explanation for the assigned score provided by the evaluator.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "The response is factually accurate but lacks sufficient detail to
- // fully address the question."
- GenAIEvaluationExplanationKey = attribute.Key("gen_ai.evaluation.explanation")
-
- // GenAIEvaluationNameKey is the attribute Key conforming to the
- // "gen_ai.evaluation.name" semantic conventions. It represents the name of the
- // evaluation metric used for the GenAI response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Relevance", "IntentResolution"
- GenAIEvaluationNameKey = attribute.Key("gen_ai.evaluation.name")
-
- // GenAIEvaluationScoreLabelKey is the attribute Key conforming to the
- // "gen_ai.evaluation.score.label" semantic conventions. It represents the human
- // readable label for evaluation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "relevant", "not_relevant", "correct", "incorrect", "pass", "fail"
- // Note: This attribute provides a human-readable interpretation of the
- // evaluation score produced by an evaluator. For example, a score value of 1
- // could mean "relevant" in one evaluation system and "not relevant" in another,
- // depending on the scoring range and evaluator. The label SHOULD have low
- // cardinality. Possible values depend on the evaluation metric and evaluator
- // used; implementations SHOULD document the possible values.
- GenAIEvaluationScoreLabelKey = attribute.Key("gen_ai.evaluation.score.label")
-
- // GenAIEvaluationScoreValueKey is the attribute Key conforming to the
- // "gen_ai.evaluation.score.value" semantic conventions. It represents the
- // evaluation score returned by the evaluator.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 4.0
- GenAIEvaluationScoreValueKey = attribute.Key("gen_ai.evaluation.score.value")
-
- // GenAIInputMessagesKey is the attribute Key conforming to the
- // "gen_ai.input.messages" semantic conventions. It represents the chat history
- // provided to the model as an input.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "[\n {\n "role": "user",\n "parts": [\n {\n "type": "text",\n
- // "content": "Weather in Paris?"\n }\n ]\n },\n {\n "role": "assistant",\n
- // "parts": [\n {\n "type": "tool_call",\n "id":
- // "call_VSPygqKTWdrhaFErNvMV18Yl",\n "name": "get_weather",\n "arguments": {\n
- // "location": "Paris"\n }\n }\n ]\n },\n {\n "role": "tool",\n "parts": [\n {\n
- // "type": "tool_call_response",\n "id": " call_VSPygqKTWdrhaFErNvMV18Yl",\n
- // "result": "rainy, 57Β°F"\n }\n ]\n }\n]\n"
- // Note: Instrumentations MUST follow [Input messages JSON schema].
- // When the attribute is recorded on events, it MUST be recorded in structured
- // form. When recorded on spans, it MAY be recorded as a JSON string if
- // structured
- // format is not supported and SHOULD be recorded in structured form otherwise.
- //
- // Messages MUST be provided in the order they were sent to the model.
- // Instrumentations MAY provide a way for users to filter or truncate
- // input messages.
- //
- // > [!Warning]
- // > This attribute is likely to contain sensitive information including
- // > user/PII data.
- //
- // See [Recording content on attributes]
- // section for more details.
- //
- // [Input messages JSON schema]: /docs/gen-ai/gen-ai-input-messages.json
- // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
- GenAIInputMessagesKey = attribute.Key("gen_ai.input.messages")
-
- // GenAIOperationNameKey is the attribute Key conforming to the
- // "gen_ai.operation.name" semantic conventions. It represents the name of the
- // operation being performed.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: If one of the predefined values applies, but specific system uses a
- // different name it's RECOMMENDED to document it in the semantic conventions
- // for specific GenAI system and use system-specific name in the
- // instrumentation. If a different name is not documented, instrumentation
- // libraries SHOULD use applicable predefined value.
- GenAIOperationNameKey = attribute.Key("gen_ai.operation.name")
-
- // GenAIOutputMessagesKey is the attribute Key conforming to the
- // "gen_ai.output.messages" semantic conventions. It represents the messages
- // returned by the model where each message represents a specific model response
- // (choice, candidate).
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "[\n {\n "role": "assistant",\n "parts": [\n {\n "type": "text",\n
- // "content": "The weather in Paris is currently rainy with a temperature of
- // 57Β°F."\n }\n ],\n "finish_reason": "stop"\n }\n]\n"
- // Note: Instrumentations MUST follow [Output messages JSON schema]
- //
- // Each message represents a single output choice/candidate generated by
- // the model. Each message corresponds to exactly one generation
- // (choice/candidate) and vice versa - one choice cannot be split across
- // multiple messages or one message cannot contain parts from multiple choices.
- //
- // When the attribute is recorded on events, it MUST be recorded in structured
- // form. When recorded on spans, it MAY be recorded as a JSON string if
- // structured
- // format is not supported and SHOULD be recorded in structured form otherwise.
- //
- // Instrumentations MAY provide a way for users to filter or truncate
- // output messages.
- //
- // > [!Warning]
- // > This attribute is likely to contain sensitive information including
- // > user/PII data.
- //
- // See [Recording content on attributes]
- // section for more details.
- //
- // [Output messages JSON schema]: /docs/gen-ai/gen-ai-output-messages.json
- // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
- GenAIOutputMessagesKey = attribute.Key("gen_ai.output.messages")
-
- // GenAIOutputTypeKey is the attribute Key conforming to the
- // "gen_ai.output.type" semantic conventions. It represents the represents the
- // content type requested by the client.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This attribute SHOULD be used when the client requests output of a
- // specific type. The model may return zero or more outputs of this type.
- // This attribute specifies the output modality and not the actual output
- // format. For example, if an image is requested, the actual output could be a
- // URL pointing to an image file.
- // Additional output format details may be recorded in the future in the
- // `gen_ai.output.{type}.*` attributes.
- GenAIOutputTypeKey = attribute.Key("gen_ai.output.type")
-
- // GenAIPromptNameKey is the attribute Key conforming to the
- // "gen_ai.prompt.name" semantic conventions. It represents the name of the
- // prompt that uniquely identifies it.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "analyze-code"
- GenAIPromptNameKey = attribute.Key("gen_ai.prompt.name")
-
- // GenAIProviderNameKey is the attribute Key conforming to the
- // "gen_ai.provider.name" semantic conventions. It represents the Generative AI
- // provider as identified by the client or server instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The attribute SHOULD be set based on the instrumentation's best
- // knowledge and may differ from the actual model provider.
- //
- // Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
- // are accessible using the OpenAI REST API and corresponding client libraries,
- // but may proxy or host models from different providers.
- //
- // The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
- // attributes may help identify the actual system in use.
- //
- // The `gen_ai.provider.name` attribute acts as a discriminator that
- // identifies the GenAI telemetry format flavor specific to that provider
- // within GenAI semantic conventions.
- // It SHOULD be set consistently with provider-specific attributes and signals.
- // For example, GenAI spans, metrics, and events related to AWS Bedrock
- // should have the `gen_ai.provider.name` set to `aws.bedrock` and include
- // applicable `aws.bedrock.*` attributes and are not expected to include
- // `openai.*` attributes.
- GenAIProviderNameKey = attribute.Key("gen_ai.provider.name")
-
- // GenAIRequestChoiceCountKey is the attribute Key conforming to the
- // "gen_ai.request.choice.count" semantic conventions. It represents the target
- // number of candidate completions to return.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3
- GenAIRequestChoiceCountKey = attribute.Key("gen_ai.request.choice.count")
-
- // GenAIRequestEncodingFormatsKey is the attribute Key conforming to the
- // "gen_ai.request.encoding_formats" semantic conventions. It represents the
- // encoding formats requested in an embeddings operation, if specified.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "base64"], ["float", "binary"
- // Note: In some GenAI systems the encoding formats are called embedding types.
- // Also, some GenAI systems only accept a single format per request.
- GenAIRequestEncodingFormatsKey = attribute.Key("gen_ai.request.encoding_formats")
-
- // GenAIRequestFrequencyPenaltyKey is the attribute Key conforming to the
- // "gen_ai.request.frequency_penalty" semantic conventions. It represents the
- // frequency penalty setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.1
- GenAIRequestFrequencyPenaltyKey = attribute.Key("gen_ai.request.frequency_penalty")
-
- // GenAIRequestMaxTokensKey is the attribute Key conforming to the
- // "gen_ai.request.max_tokens" semantic conventions. It represents the maximum
- // number of tokens the model generates for a request.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- GenAIRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens")
-
- // GenAIRequestModelKey is the attribute Key conforming to the
- // "gen_ai.request.model" semantic conventions. It represents the name of the
- // GenAI model a request is being made to.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: gpt-4
- GenAIRequestModelKey = attribute.Key("gen_ai.request.model")
-
- // GenAIRequestPresencePenaltyKey is the attribute Key conforming to the
- // "gen_ai.request.presence_penalty" semantic conventions. It represents the
- // presence penalty setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.1
- GenAIRequestPresencePenaltyKey = attribute.Key("gen_ai.request.presence_penalty")
-
- // GenAIRequestSeedKey is the attribute Key conforming to the
- // "gen_ai.request.seed" semantic conventions. It represents the requests with
- // same seed value more likely to return same result.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- GenAIRequestSeedKey = attribute.Key("gen_ai.request.seed")
-
- // GenAIRequestStopSequencesKey is the attribute Key conforming to the
- // "gen_ai.request.stop_sequences" semantic conventions. It represents the list
- // of sequences that the model will use to stop generating further tokens.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "forest", "lived"
- GenAIRequestStopSequencesKey = attribute.Key("gen_ai.request.stop_sequences")
-
- // GenAIRequestStreamKey is the attribute Key conforming to the
- // "gen_ai.request.stream" semantic conventions. It represents the indicates
- // whether the GenAI request was made in streaming mode.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- GenAIRequestStreamKey = attribute.Key("gen_ai.request.stream")
-
- // GenAIRequestTemperatureKey is the attribute Key conforming to the
- // "gen_ai.request.temperature" semantic conventions. It represents the
- // temperature setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.0
- GenAIRequestTemperatureKey = attribute.Key("gen_ai.request.temperature")
-
- // GenAIRequestTopKKey is the attribute Key conforming to the
- // "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling
- // setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- GenAIRequestTopKKey = attribute.Key("gen_ai.request.top_k")
-
- // GenAIRequestTopPKey is the attribute Key conforming to the
- // "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling
- // setting for the GenAI request.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1.0
- GenAIRequestTopPKey = attribute.Key("gen_ai.request.top_p")
-
- // GenAIResponseFinishReasonsKey is the attribute Key conforming to the
- // "gen_ai.response.finish_reasons" semantic conventions. It represents the
- // array of reasons the model stopped generating tokens, corresponding to each
- // generation received.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "stop"], ["stop", "length"
- GenAIResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons")
-
- // GenAIResponseIDKey is the attribute Key conforming to the
- // "gen_ai.response.id" semantic conventions. It represents the unique
- // identifier for the completion.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "chatcmpl-123"
- GenAIResponseIDKey = attribute.Key("gen_ai.response.id")
-
- // GenAIResponseModelKey is the attribute Key conforming to the
- // "gen_ai.response.model" semantic conventions. It represents the name of the
- // model that generated the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "gpt-4-0613"
- GenAIResponseModelKey = attribute.Key("gen_ai.response.model")
-
- // GenAIResponseTimeToFirstChunkKey is the attribute Key conforming to the
- // "gen_ai.response.time_to_first_chunk" semantic conventions. It represents the
- // time to first chunk in a streaming response, measured from request issuance,
- // in seconds. The value is measured from when the client issues the generation
- // request to when the first chunk is received in the response stream.
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0.5, 1.2
- GenAIResponseTimeToFirstChunkKey = attribute.Key("gen_ai.response.time_to_first_chunk")
-
- // GenAIRetrievalDocumentsKey is the attribute Key conforming to the
- // "gen_ai.retrieval.documents" semantic conventions. It represents the
- // documents retrieved.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "[\n {\n "id": "doc_123",\n "score": 0.95\n },\n {\n "id":
- // "doc_456",\n "score": 0.87\n },\n {\n "id": "doc_789",\n "score": 0.82\n
- // }\n]\n"
- // Note: Instrumentations MUST follow [Retrieval documents JSON schema].
- // When the attribute is recorded on events, it MUST be recorded in structured
- // form. When recorded on spans, it MAY be recorded as a JSON string if
- // structured
- // format is not supported and SHOULD be recorded in structured form otherwise.
- //
- // Each document object SHOULD contain at least the following properties:
- // `id` (string): A unique identifier for the document, `score` (double): The
- // relevance score of the document
- //
- // [Retrieval documents JSON schema]: /docs/gen-ai/gen-ai-retrieval-documents.json
- GenAIRetrievalDocumentsKey = attribute.Key("gen_ai.retrieval.documents")
-
- // GenAIRetrievalQueryTextKey is the attribute Key conforming to the
- // "gen_ai.retrieval.query.text" semantic conventions. It represents the query
- // text used for retrieval.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "What is the capital of France?", "weather in Paris"
- // Note: > [!Warning]
- //
- // > This attribute may contain sensitive information.
- GenAIRetrievalQueryTextKey = attribute.Key("gen_ai.retrieval.query.text")
-
- // GenAISystemInstructionsKey is the attribute Key conforming to the
- // "gen_ai.system_instructions" semantic conventions. It represents the system
- // message or instructions provided to the GenAI model separately from the chat
- // history.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "[\n {\n "type": "text",\n "content": "You are an Agent that greet
- // users, always use greetings tool to respond"\n }\n]\n", "[\n {\n "type":
- // "text",\n "content": "You are a language translator."\n },\n {\n "type":
- // "text",\n "content": "Your mission is to translate text in English to
- // French."\n }\n]\n"
- // Note: This attribute SHOULD be used when the corresponding provider or API
- // allows to provide system instructions or messages separately from the
- // chat history.
- //
- // Instructions that are part of the chat history SHOULD be recorded in
- // `gen_ai.input.messages` attribute instead.
- //
- // Instrumentations MUST follow [System instructions JSON schema].
- //
- // When recorded on spans, it MAY be recorded as a JSON string if structured
- // format is not supported and SHOULD be recorded in structured form otherwise.
- //
- // Instrumentations MAY provide a way for users to filter or truncate
- // system instructions.
- //
- // > [!Warning]
- // > This attribute may contain sensitive information.
- //
- // See [Recording content on attributes]
- // section for more details.
- //
- // [System instructions JSON schema]: /docs/gen-ai/gen-ai-system-instructions.json
- // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
- GenAISystemInstructionsKey = attribute.Key("gen_ai.system_instructions")
-
- // GenAITokenTypeKey is the attribute Key conforming to the "gen_ai.token.type"
- // semantic conventions. It represents the type of token being counted.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "input", "output"
- GenAITokenTypeKey = attribute.Key("gen_ai.token.type")
-
- // GenAIToolCallArgumentsKey is the attribute Key conforming to the
- // "gen_ai.tool.call.arguments" semantic conventions. It represents the
- // parameters passed to the tool call.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{\n "location": "San Francisco?",\n "date": "2025-10-01"\n}\n"
- // Note: > [!WARNING]
- //
- // > This attribute may contain sensitive information.
- //
- // It's expected to be an object - in case a serialized string is available
- // to the instrumentation, the instrumentation SHOULD do the best effort to
- // deserialize it to an object. When recorded on spans, it MAY be recorded as a
- // JSON string if structured format is not supported and SHOULD be recorded in
- // structured form otherwise.
- GenAIToolCallArgumentsKey = attribute.Key("gen_ai.tool.call.arguments")
-
- // GenAIToolCallIDKey is the attribute Key conforming to the
- // "gen_ai.tool.call.id" semantic conventions. It represents the tool call
- // identifier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "call_mszuSIzqtI65i1wAUOE8w5H4"
- GenAIToolCallIDKey = attribute.Key("gen_ai.tool.call.id")
-
- // GenAIToolCallResultKey is the attribute Key conforming to the
- // "gen_ai.tool.call.result" semantic conventions. It represents the result
- // returned by the tool call (if any and if execution was successful).
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "{\n "temperature_range": {\n "high": 75,\n "low": 60\n },\n
- // "conditions": "sunny"\n}\n"
- // Note: > [!WARNING]
- //
- // > This attribute may contain sensitive information.
- //
- // It's expected to be an object - in case a serialized string is available
- // to the instrumentation, the instrumentation SHOULD do the best effort to
- // deserialize it to an object. When recorded on spans, it MAY be recorded as a
- // JSON string if structured format is not supported and SHOULD be recorded in
- // structured form otherwise.
- GenAIToolCallResultKey = attribute.Key("gen_ai.tool.call.result")
-
- // GenAIToolDefinitionsKey is the attribute Key conforming to the
- // "gen_ai.tool.definitions" semantic conventions. It represents the list of
- // tool definitions available to the GenAI agent or model.
- //
- // Type: any
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "[\n {\n "type": "function",\n "name": "get_current_weather",\n
- // "description": "Get the current weather in a given location",\n "parameters":
- // {\n "type": "object",\n "properties": {\n "location": {\n "type": "string",\n
- // "description": "The city and state, e.g. San Francisco, CA"\n },\n "unit":
- // {\n "type": "string",\n "enum": [\n "celsius",\n "fahrenheit"\n ]\n }\n },\n
- // "required": [\n "location",\n "unit"\n ]\n }\n }\n]\n"
- // Note: Instrumentations MUST follow [Tool Definitions JSON Schema].
- //
- // When the attribute is recorded on events, it MUST be recorded in structured
- // form. When recorded on spans, it MAY be recorded as a JSON string if
- // structured
- // format is not supported and SHOULD be recorded in structured form otherwise.
- //
- // Since this attribute could be large, it's NOT RECOMMENDED to populate
- // non-required properties by default. Instrumentations MAY provide a way
- // to enable populating optional properties.
- //
- // [Tool Definitions JSON Schema]: /docs/gen-ai/gen-ai-tool-definitions.json
- GenAIToolDefinitionsKey = attribute.Key("gen_ai.tool.definitions")
-
- // GenAIToolDescriptionKey is the attribute Key conforming to the
- // "gen_ai.tool.description" semantic conventions. It represents the tool
- // description.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Multiply two numbers"
- GenAIToolDescriptionKey = attribute.Key("gen_ai.tool.description")
-
- // GenAIToolNameKey is the attribute Key conforming to the "gen_ai.tool.name"
- // semantic conventions. It represents the name of the tool utilized by the
- // agent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Flights"
- GenAIToolNameKey = attribute.Key("gen_ai.tool.name")
-
- // GenAIToolTypeKey is the attribute Key conforming to the "gen_ai.tool.type"
- // semantic conventions. It represents the type of the tool utilized by the
- // agent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "function", "extension", "datastore"
- // Note: Extension: A tool executed on the agent-side to directly call external
- // APIs, bridging the gap between the agent and real-world systems.
- // Agent-side operations involve actions that are performed by the agent on the
- // server or within the agent's controlled environment.
- // Function: A tool executed on the client-side, where the agent generates
- // parameters for a predefined function, and the client executes the logic.
- // Client-side operations are actions taken on the user's end or within the
- // client application.
- // Datastore: A tool used by the agent to access and query structured or
- // unstructured external data for retrieval-augmented tasks or knowledge
- // updates.
- GenAIToolTypeKey = attribute.Key("gen_ai.tool.type")
-
- // GenAIUsageCacheCreationInputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.cache_creation.input_tokens" semantic conventions. It
- // represents the number of input tokens written to a provider-managed cache.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 25
- // Note: The value SHOULD be included in `gen_ai.usage.input_tokens`.
- GenAIUsageCacheCreationInputTokensKey = attribute.Key("gen_ai.usage.cache_creation.input_tokens")
-
- // GenAIUsageCacheReadInputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.cache_read.input_tokens" semantic conventions. It represents
- // the number of input tokens served from a provider-managed cache.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 50
- // Note: The value SHOULD be included in `gen_ai.usage.input_tokens`.
- GenAIUsageCacheReadInputTokensKey = attribute.Key("gen_ai.usage.cache_read.input_tokens")
-
- // GenAIUsageInputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.input_tokens" semantic conventions. It represents the number of
- // tokens used in the GenAI input (prompt).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 100
- // Note: This value SHOULD include all types of input tokens, including cached
- // tokens.
- // Instrumentations SHOULD make a best effort to populate this value, using a
- // total
- // provided by the provider when available or, depending on the provider API,
- // by summing different token types parsed from the provider output.
- GenAIUsageInputTokensKey = attribute.Key("gen_ai.usage.input_tokens")
-
- // GenAIUsageOutputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.output_tokens" semantic conventions. It represents the number
- // of tokens used in the GenAI response (completion).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 180
- GenAIUsageOutputTokensKey = attribute.Key("gen_ai.usage.output_tokens")
-
- // GenAIUsageReasoningOutputTokensKey is the attribute Key conforming to the
- // "gen_ai.usage.reasoning.output_tokens" semantic conventions. It represents
- // the number of output tokens used for reasoning (e.g. chain-of-thought,
- // extended thinking).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 50
- // Note: The value SHOULD be included in `gen_ai.usage.output_tokens`.
- GenAIUsageReasoningOutputTokensKey = attribute.Key("gen_ai.usage.reasoning.output_tokens")
-
- // GenAIWorkflowNameKey is the attribute Key conforming to the
- // "gen_ai.workflow.name" semantic conventions. It represents the human-readable
- // name of the GenAI workflow provided by the application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "multi_agent_rag", "customer_support_pipeline"
- // Note: This attribute can be populated in different frameworks eg: name of the
- // first chain in LangChain OR name of the crew in CrewAI.
- GenAIWorkflowNameKey = attribute.Key("gen_ai.workflow.name")
-)
-
-// GenAIAgentDescription returns an attribute KeyValue conforming to the
-// "gen_ai.agent.description" semantic conventions. It represents the free-form
-// description of the GenAI agent provided by the application.
-func GenAIAgentDescription(val string) attribute.KeyValue {
- return GenAIAgentDescriptionKey.String(val)
-}
-
-// GenAIAgentID returns an attribute KeyValue conforming to the "gen_ai.agent.id"
-// semantic conventions. It represents the unique identifier of the GenAI agent.
-func GenAIAgentID(val string) attribute.KeyValue {
- return GenAIAgentIDKey.String(val)
-}
-
-// GenAIAgentName returns an attribute KeyValue conforming to the
-// "gen_ai.agent.name" semantic conventions. It represents the human-readable
-// name of the GenAI agent provided by the application.
-func GenAIAgentName(val string) attribute.KeyValue {
- return GenAIAgentNameKey.String(val)
-}
-
-// GenAIAgentVersion returns an attribute KeyValue conforming to the
-// "gen_ai.agent.version" semantic conventions. It represents the version of the
-// GenAI agent.
-func GenAIAgentVersion(val string) attribute.KeyValue {
- return GenAIAgentVersionKey.String(val)
-}
-
-// GenAIConversationID returns an attribute KeyValue conforming to the
-// "gen_ai.conversation.id" semantic conventions. It represents the unique
-// identifier for a conversation (session, thread), used to store and correlate
-// messages within this conversation.
-func GenAIConversationID(val string) attribute.KeyValue {
- return GenAIConversationIDKey.String(val)
-}
-
-// GenAIDataSourceID returns an attribute KeyValue conforming to the
-// "gen_ai.data_source.id" semantic conventions. It represents the data source
-// identifier.
-func GenAIDataSourceID(val string) attribute.KeyValue {
- return GenAIDataSourceIDKey.String(val)
-}
-
-// GenAIEmbeddingsDimensionCount returns an attribute KeyValue conforming to the
-// "gen_ai.embeddings.dimension.count" semantic conventions. It represents the
-// number of dimensions the resulting output embeddings should have.
-func GenAIEmbeddingsDimensionCount(val int) attribute.KeyValue {
- return GenAIEmbeddingsDimensionCountKey.Int(val)
-}
-
-// GenAIEvaluationExplanation returns an attribute KeyValue conforming to the
-// "gen_ai.evaluation.explanation" semantic conventions. It represents a
-// free-form explanation for the assigned score provided by the evaluator.
-func GenAIEvaluationExplanation(val string) attribute.KeyValue {
- return GenAIEvaluationExplanationKey.String(val)
-}
-
-// GenAIEvaluationName returns an attribute KeyValue conforming to the
-// "gen_ai.evaluation.name" semantic conventions. It represents the name of the
-// evaluation metric used for the GenAI response.
-func GenAIEvaluationName(val string) attribute.KeyValue {
- return GenAIEvaluationNameKey.String(val)
-}
-
-// GenAIEvaluationScoreLabel returns an attribute KeyValue conforming to the
-// "gen_ai.evaluation.score.label" semantic conventions. It represents the human
-// readable label for evaluation.
-func GenAIEvaluationScoreLabel(val string) attribute.KeyValue {
- return GenAIEvaluationScoreLabelKey.String(val)
-}
-
-// GenAIEvaluationScoreValue returns an attribute KeyValue conforming to the
-// "gen_ai.evaluation.score.value" semantic conventions. It represents the
-// evaluation score returned by the evaluator.
-func GenAIEvaluationScoreValue(val float64) attribute.KeyValue {
- return GenAIEvaluationScoreValueKey.Float64(val)
-}
-
-// GenAIPromptName returns an attribute KeyValue conforming to the
-// "gen_ai.prompt.name" semantic conventions. It represents the name of the
-// prompt that uniquely identifies it.
-func GenAIPromptName(val string) attribute.KeyValue {
- return GenAIPromptNameKey.String(val)
-}
-
-// GenAIRequestChoiceCount returns an attribute KeyValue conforming to the
-// "gen_ai.request.choice.count" semantic conventions. It represents the target
-// number of candidate completions to return.
-func GenAIRequestChoiceCount(val int) attribute.KeyValue {
- return GenAIRequestChoiceCountKey.Int(val)
-}
-
-// GenAIRequestEncodingFormats returns an attribute KeyValue conforming to the
-// "gen_ai.request.encoding_formats" semantic conventions. It represents the
-// encoding formats requested in an embeddings operation, if specified.
-func GenAIRequestEncodingFormats(val ...string) attribute.KeyValue {
- return GenAIRequestEncodingFormatsKey.StringSlice(val)
-}
-
-// GenAIRequestFrequencyPenalty returns an attribute KeyValue conforming to the
-// "gen_ai.request.frequency_penalty" semantic conventions. It represents the
-// frequency penalty setting for the GenAI request.
-func GenAIRequestFrequencyPenalty(val float64) attribute.KeyValue {
- return GenAIRequestFrequencyPenaltyKey.Float64(val)
-}
-
-// GenAIRequestMaxTokens returns an attribute KeyValue conforming to the
-// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum
-// number of tokens the model generates for a request.
-func GenAIRequestMaxTokens(val int) attribute.KeyValue {
- return GenAIRequestMaxTokensKey.Int(val)
-}
-
-// GenAIRequestModel returns an attribute KeyValue conforming to the
-// "gen_ai.request.model" semantic conventions. It represents the name of the
-// GenAI model a request is being made to.
-func GenAIRequestModel(val string) attribute.KeyValue {
- return GenAIRequestModelKey.String(val)
-}
-
-// GenAIRequestPresencePenalty returns an attribute KeyValue conforming to the
-// "gen_ai.request.presence_penalty" semantic conventions. It represents the
-// presence penalty setting for the GenAI request.
-func GenAIRequestPresencePenalty(val float64) attribute.KeyValue {
- return GenAIRequestPresencePenaltyKey.Float64(val)
-}
-
-// GenAIRequestSeed returns an attribute KeyValue conforming to the
-// "gen_ai.request.seed" semantic conventions. It represents the requests with
-// same seed value more likely to return same result.
-func GenAIRequestSeed(val int) attribute.KeyValue {
- return GenAIRequestSeedKey.Int(val)
-}
-
-// GenAIRequestStopSequences returns an attribute KeyValue conforming to the
-// "gen_ai.request.stop_sequences" semantic conventions. It represents the list
-// of sequences that the model will use to stop generating further tokens.
-func GenAIRequestStopSequences(val ...string) attribute.KeyValue {
- return GenAIRequestStopSequencesKey.StringSlice(val)
-}
-
-// GenAIRequestStream returns an attribute KeyValue conforming to the
-// "gen_ai.request.stream" semantic conventions. It represents the indicates
-// whether the GenAI request was made in streaming mode.
-func GenAIRequestStream(val bool) attribute.KeyValue {
- return GenAIRequestStreamKey.Bool(val)
-}
-
-// GenAIRequestTemperature returns an attribute KeyValue conforming to the
-// "gen_ai.request.temperature" semantic conventions. It represents the
-// temperature setting for the GenAI request.
-func GenAIRequestTemperature(val float64) attribute.KeyValue {
- return GenAIRequestTemperatureKey.Float64(val)
-}
-
-// GenAIRequestTopK returns an attribute KeyValue conforming to the
-// "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling
-// setting for the GenAI request.
-func GenAIRequestTopK(val float64) attribute.KeyValue {
- return GenAIRequestTopKKey.Float64(val)
-}
-
-// GenAIRequestTopP returns an attribute KeyValue conforming to the
-// "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling
-// setting for the GenAI request.
-func GenAIRequestTopP(val float64) attribute.KeyValue {
- return GenAIRequestTopPKey.Float64(val)
-}
-
-// GenAIResponseFinishReasons returns an attribute KeyValue conforming to the
-// "gen_ai.response.finish_reasons" semantic conventions. It represents the array
-// of reasons the model stopped generating tokens, corresponding to each
-// generation received.
-func GenAIResponseFinishReasons(val ...string) attribute.KeyValue {
- return GenAIResponseFinishReasonsKey.StringSlice(val)
-}
-
-// GenAIResponseID returns an attribute KeyValue conforming to the
-// "gen_ai.response.id" semantic conventions. It represents the unique identifier
-// for the completion.
-func GenAIResponseID(val string) attribute.KeyValue {
- return GenAIResponseIDKey.String(val)
-}
-
-// GenAIResponseModel returns an attribute KeyValue conforming to the
-// "gen_ai.response.model" semantic conventions. It represents the name of the
-// model that generated the response.
-func GenAIResponseModel(val string) attribute.KeyValue {
- return GenAIResponseModelKey.String(val)
-}
-
-// GenAIResponseTimeToFirstChunk returns an attribute KeyValue conforming to the
-// "gen_ai.response.time_to_first_chunk" semantic conventions. It represents the
-// time to first chunk in a streaming response, measured from request issuance,
-// in seconds. The value is measured from when the client issues the generation
-// request to when the first chunk is received in the response stream.
-func GenAIResponseTimeToFirstChunk(val float64) attribute.KeyValue {
- return GenAIResponseTimeToFirstChunkKey.Float64(val)
-}
-
-// GenAIRetrievalQueryText returns an attribute KeyValue conforming to the
-// "gen_ai.retrieval.query.text" semantic conventions. It represents the query
-// text used for retrieval.
-func GenAIRetrievalQueryText(val string) attribute.KeyValue {
- return GenAIRetrievalQueryTextKey.String(val)
-}
-
-// GenAIToolCallID returns an attribute KeyValue conforming to the
-// "gen_ai.tool.call.id" semantic conventions. It represents the tool call
-// identifier.
-func GenAIToolCallID(val string) attribute.KeyValue {
- return GenAIToolCallIDKey.String(val)
-}
-
-// GenAIToolDescription returns an attribute KeyValue conforming to the
-// "gen_ai.tool.description" semantic conventions. It represents the tool
-// description.
-func GenAIToolDescription(val string) attribute.KeyValue {
- return GenAIToolDescriptionKey.String(val)
-}
-
-// GenAIToolName returns an attribute KeyValue conforming to the
-// "gen_ai.tool.name" semantic conventions. It represents the name of the tool
-// utilized by the agent.
-func GenAIToolName(val string) attribute.KeyValue {
- return GenAIToolNameKey.String(val)
-}
-
-// GenAIToolType returns an attribute KeyValue conforming to the
-// "gen_ai.tool.type" semantic conventions. It represents the type of the tool
-// utilized by the agent.
-func GenAIToolType(val string) attribute.KeyValue {
- return GenAIToolTypeKey.String(val)
-}
-
-// GenAIUsageCacheCreationInputTokens returns an attribute KeyValue conforming to
-// the "gen_ai.usage.cache_creation.input_tokens" semantic conventions. It
-// represents the number of input tokens written to a provider-managed cache.
-func GenAIUsageCacheCreationInputTokens(val int) attribute.KeyValue {
- return GenAIUsageCacheCreationInputTokensKey.Int(val)
-}
-
-// GenAIUsageCacheReadInputTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.cache_read.input_tokens" semantic conventions. It represents the
-// number of input tokens served from a provider-managed cache.
-func GenAIUsageCacheReadInputTokens(val int) attribute.KeyValue {
- return GenAIUsageCacheReadInputTokensKey.Int(val)
-}
-
-// GenAIUsageInputTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.input_tokens" semantic conventions. It represents the number of
-// tokens used in the GenAI input (prompt).
-func GenAIUsageInputTokens(val int) attribute.KeyValue {
- return GenAIUsageInputTokensKey.Int(val)
-}
-
-// GenAIUsageOutputTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.output_tokens" semantic conventions. It represents the number of
-// tokens used in the GenAI response (completion).
-func GenAIUsageOutputTokens(val int) attribute.KeyValue {
- return GenAIUsageOutputTokensKey.Int(val)
-}
-
-// GenAIUsageReasoningOutputTokens returns an attribute KeyValue conforming to
-// the "gen_ai.usage.reasoning.output_tokens" semantic conventions. It represents
-// the number of output tokens used for reasoning (e.g. chain-of-thought,
-// extended thinking).
-func GenAIUsageReasoningOutputTokens(val int) attribute.KeyValue {
- return GenAIUsageReasoningOutputTokensKey.Int(val)
-}
-
-// GenAIWorkflowName returns an attribute KeyValue conforming to the
-// "gen_ai.workflow.name" semantic conventions. It represents the human-readable
-// name of the GenAI workflow provided by the application.
-func GenAIWorkflowName(val string) attribute.KeyValue {
- return GenAIWorkflowNameKey.String(val)
-}
-
-// Enum values for gen_ai.operation.name
-var (
- // Chat completion operation such as [OpenAI Chat API]
- // Stability: development
- //
- // [OpenAI Chat API]: https://platform.openai.com/docs/api-reference/chat
- GenAIOperationNameChat = GenAIOperationNameKey.String("chat")
- // Multimodal content generation operation such as [Gemini Generate Content]
- // Stability: development
- //
- // [Gemini Generate Content]: https://ai.google.dev/api/generate-content
- GenAIOperationNameGenerateContent = GenAIOperationNameKey.String("generate_content")
- // Text completions operation such as [OpenAI Completions API (Legacy)]
- // Stability: development
- //
- // [OpenAI Completions API (Legacy)]: https://platform.openai.com/docs/api-reference/completions
- GenAIOperationNameTextCompletion = GenAIOperationNameKey.String("text_completion")
- // Embeddings operation such as [OpenAI Create embeddings API]
- // Stability: development
- //
- // [OpenAI Create embeddings API]: https://platform.openai.com/docs/api-reference/embeddings/create
- GenAIOperationNameEmbeddings = GenAIOperationNameKey.String("embeddings")
- // Retrieval operation such as [OpenAI Search Vector Store API]
- // Stability: development
- //
- // [OpenAI Search Vector Store API]: https://platform.openai.com/docs/api-reference/vector-stores/search
- GenAIOperationNameRetrieval = GenAIOperationNameKey.String("retrieval")
- // Create GenAI agent
- // Stability: development
- GenAIOperationNameCreateAgent = GenAIOperationNameKey.String("create_agent")
- // Invoke GenAI agent
- // Stability: development
- GenAIOperationNameInvokeAgent = GenAIOperationNameKey.String("invoke_agent")
- // Execute a tool
- // Stability: development
- GenAIOperationNameExecuteTool = GenAIOperationNameKey.String("execute_tool")
- // Invoke GenAI workflow
- // Stability: development
- GenAIOperationNameInvokeWorkflow = GenAIOperationNameKey.String("invoke_workflow")
-)
-
-// Enum values for gen_ai.output.type
-var (
- // Plain text
- // Stability: development
- GenAIOutputTypeText = GenAIOutputTypeKey.String("text")
- // JSON object with known or unknown schema
- // Stability: development
- GenAIOutputTypeJSON = GenAIOutputTypeKey.String("json")
- // Image
- // Stability: development
- GenAIOutputTypeImage = GenAIOutputTypeKey.String("image")
- // Speech
- // Stability: development
- GenAIOutputTypeSpeech = GenAIOutputTypeKey.String("speech")
-)
-
-// Enum values for gen_ai.provider.name
-var (
- // [OpenAI]
- // Stability: development
- //
- // [OpenAI]: https://openai.com/
- GenAIProviderNameOpenAI = GenAIProviderNameKey.String("openai")
- // Any Google generative AI endpoint
- // Stability: development
- GenAIProviderNameGCPGenAI = GenAIProviderNameKey.String("gcp.gen_ai")
- // [Vertex AI]
- // Stability: development
- //
- // [Vertex AI]: https://cloud.google.com/vertex-ai
- GenAIProviderNameGCPVertexAI = GenAIProviderNameKey.String("gcp.vertex_ai")
- // [Gemini]
- // Stability: development
- //
- // [Gemini]: https://cloud.google.com/products/gemini
- GenAIProviderNameGCPGemini = GenAIProviderNameKey.String("gcp.gemini")
- // [Anthropic]
- // Stability: development
- //
- // [Anthropic]: https://www.anthropic.com/
- GenAIProviderNameAnthropic = GenAIProviderNameKey.String("anthropic")
- // [Cohere]
- // Stability: development
- //
- // [Cohere]: https://cohere.com/
- GenAIProviderNameCohere = GenAIProviderNameKey.String("cohere")
- // Azure AI Inference
- // Stability: development
- GenAIProviderNameAzureAIInference = GenAIProviderNameKey.String("azure.ai.inference")
- // [Azure OpenAI]
- // Stability: development
- //
- // [Azure OpenAI]: https://learn.microsoft.com/en-us/azure/ai-services/openai/overview
- GenAIProviderNameAzureAIOpenAI = GenAIProviderNameKey.String("azure.ai.openai")
- // [IBM Watsonx AI]
- // Stability: development
- //
- // [IBM Watsonx AI]: https://www.ibm.com/products/watsonx-ai
- GenAIProviderNameIBMWatsonxAI = GenAIProviderNameKey.String("ibm.watsonx.ai")
- // [AWS Bedrock]
- // Stability: development
- //
- // [AWS Bedrock]: https://aws.amazon.com/bedrock
- GenAIProviderNameAWSBedrock = GenAIProviderNameKey.String("aws.bedrock")
- // [Perplexity]
- // Stability: development
- //
- // [Perplexity]: https://www.perplexity.ai/
- GenAIProviderNamePerplexity = GenAIProviderNameKey.String("perplexity")
- // [xAI]
- // Stability: development
- //
- // [xAI]: https://x.ai/
- GenAIProviderNameXAI = GenAIProviderNameKey.String("x_ai")
- // [DeepSeek]
- // Stability: development
- //
- // [DeepSeek]: https://www.deepseek.com/
- GenAIProviderNameDeepseek = GenAIProviderNameKey.String("deepseek")
- // [Groq]
- // Stability: development
- //
- // [Groq]: https://groq.com/
- GenAIProviderNameGroq = GenAIProviderNameKey.String("groq")
- // [Mistral AI]
- // Stability: development
- //
- // [Mistral AI]: https://mistral.ai/
- GenAIProviderNameMistralAI = GenAIProviderNameKey.String("mistral_ai")
-)
-
-// Enum values for gen_ai.token.type
-var (
- // Input tokens (prompt, input, etc.)
- // Stability: development
- GenAITokenTypeInput = GenAITokenTypeKey.String("input")
- // Output tokens (completion, response, etc.)
- // Stability: development
- GenAITokenTypeOutput = GenAITokenTypeKey.String("output")
-)
-
-// Namespace: geo
-const (
- // GeoContinentCodeKey is the attribute Key conforming to the
- // "geo.continent.code" semantic conventions. It represents the two-letter code
- // representing continentβs name.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- GeoContinentCodeKey = attribute.Key("geo.continent.code")
-
- // GeoCountryISOCodeKey is the attribute Key conforming to the
- // "geo.country.iso_code" semantic conventions. It represents the two-letter ISO
- // Country Code ([ISO 3166-1 alpha2]).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CA"
- //
- // [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes
- GeoCountryISOCodeKey = attribute.Key("geo.country.iso_code")
-
- // GeoLocalityNameKey is the attribute Key conforming to the "geo.locality.name"
- // semantic conventions. It represents the locality name. Represents the name of
- // a city, town, village, or similar populated place.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Montreal", "Berlin"
- GeoLocalityNameKey = attribute.Key("geo.locality.name")
-
- // GeoLocationLatKey is the attribute Key conforming to the "geo.location.lat"
- // semantic conventions. It represents the latitude of the geo location in
- // [WGS84].
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 45.505918
- //
- // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
- GeoLocationLatKey = attribute.Key("geo.location.lat")
-
- // GeoLocationLonKey is the attribute Key conforming to the "geo.location.lon"
- // semantic conventions. It represents the longitude of the geo location in
- // [WGS84].
- //
- // Type: double
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: -73.61483
- //
- // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
- GeoLocationLonKey = attribute.Key("geo.location.lon")
-
- // GeoPostalCodeKey is the attribute Key conforming to the "geo.postal_code"
- // semantic conventions. It represents the postal code associated with the
- // location. Values appropriate for this field may also be known as a postcode
- // or ZIP code and will vary widely from country to country.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "94040"
- GeoPostalCodeKey = attribute.Key("geo.postal_code")
-
- // GeoRegionISOCodeKey is the attribute Key conforming to the
- // "geo.region.iso_code" semantic conventions. It represents the region ISO code
- // ([ISO 3166-2]).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CA-QC"
- //
- // [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2
- GeoRegionISOCodeKey = attribute.Key("geo.region.iso_code")
-)
-
-// GeoCountryISOCode returns an attribute KeyValue conforming to the
-// "geo.country.iso_code" semantic conventions. It represents the two-letter ISO
-// Country Code ([ISO 3166-1 alpha2]).
-//
-// [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes
-func GeoCountryISOCode(val string) attribute.KeyValue {
- return GeoCountryISOCodeKey.String(val)
-}
-
-// GeoLocalityName returns an attribute KeyValue conforming to the
-// "geo.locality.name" semantic conventions. It represents the locality name.
-// Represents the name of a city, town, village, or similar populated place.
-func GeoLocalityName(val string) attribute.KeyValue {
- return GeoLocalityNameKey.String(val)
-}
-
-// GeoLocationLat returns an attribute KeyValue conforming to the
-// "geo.location.lat" semantic conventions. It represents the latitude of the geo
-// location in [WGS84].
-//
-// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
-func GeoLocationLat(val float64) attribute.KeyValue {
- return GeoLocationLatKey.Float64(val)
-}
-
-// GeoLocationLon returns an attribute KeyValue conforming to the
-// "geo.location.lon" semantic conventions. It represents the longitude of the
-// geo location in [WGS84].
-//
-// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84
-func GeoLocationLon(val float64) attribute.KeyValue {
- return GeoLocationLonKey.Float64(val)
-}
-
-// GeoPostalCode returns an attribute KeyValue conforming to the
-// "geo.postal_code" semantic conventions. It represents the postal code
-// associated with the location. Values appropriate for this field may also be
-// known as a postcode or ZIP code and will vary widely from country to country.
-func GeoPostalCode(val string) attribute.KeyValue {
- return GeoPostalCodeKey.String(val)
-}
-
-// GeoRegionISOCode returns an attribute KeyValue conforming to the
-// "geo.region.iso_code" semantic conventions. It represents the region ISO code
-// ([ISO 3166-2]).
-//
-// [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2
-func GeoRegionISOCode(val string) attribute.KeyValue {
- return GeoRegionISOCodeKey.String(val)
-}
-
-// Enum values for geo.continent.code
-var (
- // Africa
- // Stability: development
- GeoContinentCodeAf = GeoContinentCodeKey.String("AF")
- // Antarctica
- // Stability: development
- GeoContinentCodeAn = GeoContinentCodeKey.String("AN")
- // Asia
- // Stability: development
- GeoContinentCodeAs = GeoContinentCodeKey.String("AS")
- // Europe
- // Stability: development
- GeoContinentCodeEu = GeoContinentCodeKey.String("EU")
- // North America
- // Stability: development
- GeoContinentCodeNa = GeoContinentCodeKey.String("NA")
- // Oceania
- // Stability: development
- GeoContinentCodeOc = GeoContinentCodeKey.String("OC")
- // South America
- // Stability: development
- GeoContinentCodeSa = GeoContinentCodeKey.String("SA")
-)
-
-// Namespace: go
-const (
- // GoCPUDetailedStateKey is the attribute Key conforming to the
- // "go.cpu.detailed_state" semantic conventions. It represents the detailed
- // state of the CPU.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "gc/pause", "gc/mark/assist"
- // Note: Value SHOULD match the specific CPU class reported by the Go runtime
- // under `/cpu/classes/...`. The list of possible values is subject to change
- // with the Go version used.
- GoCPUDetailedStateKey = attribute.Key("go.cpu.detailed_state")
-
- // GoCPUStateKey is the attribute Key conforming to the "go.cpu.state" semantic
- // conventions. It represents the state of the CPU.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "user", "gc"
- GoCPUStateKey = attribute.Key("go.cpu.state")
-
- // GoMemoryDetailedTypeKey is the attribute Key conforming to the
- // "go.memory.detailed_type" semantic conventions. It represents the detailed
- // type of memory.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "heap/objects", "heap/free"
- // Note: Value SHOULD match the specific memory class reported by the Go runtime
- // under `/memory/classes/...`. The list of possible values is subject to change
- // with the Go version used.
- GoMemoryDetailedTypeKey = attribute.Key("go.memory.detailed_type")
-
- // GoMemoryTypeKey is the attribute Key conforming to the "go.memory.type"
- // semantic conventions. It represents the type of memory.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "other", "stack"
- GoMemoryTypeKey = attribute.Key("go.memory.type")
-)
-
-// GoCPUDetailedState returns an attribute KeyValue conforming to the
-// "go.cpu.detailed_state" semantic conventions. It represents the detailed state
-// of the CPU.
-func GoCPUDetailedState(val string) attribute.KeyValue {
- return GoCPUDetailedStateKey.String(val)
-}
-
-// GoMemoryDetailedType returns an attribute KeyValue conforming to the
-// "go.memory.detailed_type" semantic conventions. It represents the detailed
-// type of memory.
-func GoMemoryDetailedType(val string) attribute.KeyValue {
- return GoMemoryDetailedTypeKey.String(val)
-}
-
-// Enum values for go.cpu.state
-var (
- // CPU time spent running user Go code.
- // Stability: development
- GoCPUStateUser = GoCPUStateKey.String("user")
- // CPU time spent performing garbage collection tasks.
- // Stability: development
- GoCPUStateGC = GoCPUStateKey.String("gc")
- // CPU time spent returning unused memory to the underlying platform.
- // Stability: development
- GoCPUStateScavenge = GoCPUStateKey.String("scavenge")
- // Available CPU time not spent executing any Go or Go runtime code.
- // Stability: development
- GoCPUStateIdle = GoCPUStateKey.String("idle")
-)
-
-// Enum values for go.memory.type
-var (
- // Memory allocated from the heap that is reserved for stack space, whether or
- // not it is currently in-use.
- // Stability: development
- GoMemoryTypeStack = GoMemoryTypeKey.String("stack")
- // Memory used by the Go runtime, excluding other categories of memory usage
- // described in this enumeration.
- // Stability: development
- GoMemoryTypeOther = GoMemoryTypeKey.String("other")
-)
-
-// Namespace: graphql
-const (
- // GraphQLDocumentKey is the attribute Key conforming to the "graphql.document"
- // semantic conventions. It represents the GraphQL document being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: query findBookById { bookById(id: ?) { name } }
- // Note: If instrumentation can reliably identify and redact sensitive
- // information it SHOULD do it.
- GraphQLDocumentKey = attribute.Key("graphql.document")
-
- // GraphQLOperationNameKey is the attribute Key conforming to the
- // "graphql.operation.name" semantic conventions. It represents the name of the
- // operation being executed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: findBookById
- GraphQLOperationNameKey = attribute.Key("graphql.operation.name")
-
- // GraphQLOperationTypeKey is the attribute Key conforming to the
- // "graphql.operation.type" semantic conventions. It represents the type of the
- // operation being executed.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "query", "mutation", "subscription"
- GraphQLOperationTypeKey = attribute.Key("graphql.operation.type")
-)
-
-// GraphQLDocument returns an attribute KeyValue conforming to the
-// "graphql.document" semantic conventions. It represents the GraphQL document
-// being executed.
-func GraphQLDocument(val string) attribute.KeyValue {
- return GraphQLDocumentKey.String(val)
-}
-
-// GraphQLOperationName returns an attribute KeyValue conforming to the
-// "graphql.operation.name" semantic conventions. It represents the name of the
-// operation being executed.
-func GraphQLOperationName(val string) attribute.KeyValue {
- return GraphQLOperationNameKey.String(val)
-}
-
-// Enum values for graphql.operation.type
-var (
- // GraphQL query
- // Stability: development
- GraphQLOperationTypeQuery = GraphQLOperationTypeKey.String("query")
- // GraphQL mutation
- // Stability: development
- GraphQLOperationTypeMutation = GraphQLOperationTypeKey.String("mutation")
- // GraphQL subscription
- // Stability: development
- GraphQLOperationTypeSubscription = GraphQLOperationTypeKey.String("subscription")
-)
-
-// Namespace: heroku
-const (
- // HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id"
- // semantic conventions. It represents the unique identifier for the
- // application.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2daa2797-e42b-4624-9322-ec3f968df4da"
- HerokuAppIDKey = attribute.Key("heroku.app.id")
-
- // HerokuReleaseCommitKey is the attribute Key conforming to the
- // "heroku.release.commit" semantic conventions. It represents the commit hash
- // for the current release.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "e6134959463efd8966b20e75b913cafe3f5ec"
- HerokuReleaseCommitKey = attribute.Key("heroku.release.commit")
-
- // HerokuReleaseCreationTimestampKey is the attribute Key conforming to the
- // "heroku.release.creation_timestamp" semantic conventions. It represents the
- // time and date the release was created.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2022-10-23T18:00:42Z"
- HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp")
-)
-
-// HerokuAppID returns an attribute KeyValue conforming to the "heroku.app.id"
-// semantic conventions. It represents the unique identifier for the application.
-func HerokuAppID(val string) attribute.KeyValue {
- return HerokuAppIDKey.String(val)
-}
-
-// HerokuReleaseCommit returns an attribute KeyValue conforming to the
-// "heroku.release.commit" semantic conventions. It represents the commit hash
-// for the current release.
-func HerokuReleaseCommit(val string) attribute.KeyValue {
- return HerokuReleaseCommitKey.String(val)
-}
-
-// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming to the
-// "heroku.release.creation_timestamp" semantic conventions. It represents the
-// time and date the release was created.
-func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue {
- return HerokuReleaseCreationTimestampKey.String(val)
-}
-
-// Namespace: host
-const (
- // HostArchKey is the attribute Key conforming to the "host.arch" semantic
- // conventions. It represents the CPU architecture the host system is running
- // on.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HostArchKey = attribute.Key("host.arch")
-
- // HostCPUCacheL2SizeKey is the attribute Key conforming to the
- // "host.cpu.cache.l2.size" semantic conventions. It represents the amount of
- // level 2 memory cache available to the processor (in Bytes).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 12288000
- HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size")
-
- // HostCPUFamilyKey is the attribute Key conforming to the "host.cpu.family"
- // semantic conventions. It represents the family or generation of the CPU.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "6", "PA-RISC 1.1e"
- HostCPUFamilyKey = attribute.Key("host.cpu.family")
-
- // HostCPUModelIDKey is the attribute Key conforming to the "host.cpu.model.id"
- // semantic conventions. It represents the model identifier. It provides more
- // granular information about the CPU, distinguishing it from other CPUs within
- // the same family.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "6", "9000/778/B180L"
- HostCPUModelIDKey = attribute.Key("host.cpu.model.id")
-
- // HostCPUModelNameKey is the attribute Key conforming to the
- // "host.cpu.model.name" semantic conventions. It represents the model
- // designation of the processor.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz"
- HostCPUModelNameKey = attribute.Key("host.cpu.model.name")
-
- // HostCPUSteppingKey is the attribute Key conforming to the "host.cpu.stepping"
- // semantic conventions. It represents the stepping or core revisions.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1", "r1p1"
- HostCPUSteppingKey = attribute.Key("host.cpu.stepping")
-
- // HostCPUVendorIDKey is the attribute Key conforming to the
- // "host.cpu.vendor.id" semantic conventions. It represents the processor
- // manufacturer identifier. A maximum 12-character string.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "GenuineIntel"
- // Note: [CPUID] command returns the vendor ID string in EBX, EDX and ECX
- // registers. Writing these to memory in this order results in a 12-character
- // string.
- //
- // [CPUID]: https://wiki.osdev.org/CPUID
- HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id")
-
- // HostIDKey is the attribute Key conforming to the "host.id" semantic
- // conventions. It represents the unique host ID. For Cloud, this must be the
- // instance_id assigned by the cloud provider. For non-containerized systems,
- // this should be the `machine-id`. See the table below for the sources to use
- // to determine the `machine-id` based on operating system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "fdbf79e8af94cb7f9e8df36789187052"
- HostIDKey = attribute.Key("host.id")
-
- // HostImageIDKey is the attribute Key conforming to the "host.image.id"
- // semantic conventions. It represents the VM image ID or host OS image ID. For
- // Cloud, this value is from the provider.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ami-07b06b442921831e5"
- HostImageIDKey = attribute.Key("host.image.id")
-
- // HostImageNameKey is the attribute Key conforming to the "host.image.name"
- // semantic conventions. It represents the name of the VM image or OS install
- // the host was instantiated from.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "infra-ami-eks-worker-node-7d4ec78312", "CentOS-8-x86_64-1905"
- HostImageNameKey = attribute.Key("host.image.name")
-
- // HostImageVersionKey is the attribute Key conforming to the
- // "host.image.version" semantic conventions. It represents the version string
- // of the VM image or host OS as defined in [Version Attributes].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0.1"
- //
- // [Version Attributes]: /docs/resource/README.md#version-attributes
- HostImageVersionKey = attribute.Key("host.image.version")
-
- // HostIPKey is the attribute Key conforming to the "host.ip" semantic
- // conventions. It represents the available IP addresses of the host, excluding
- // loopback interfaces.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "192.168.1.140", "fe80::abc2:4a28:737a:609e"
- // Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6
- // addresses MUST be specified in the [RFC 5952] format.
- //
- // [RFC 5952]: https://www.rfc-editor.org/rfc/rfc5952.html
- HostIPKey = attribute.Key("host.ip")
-
- // HostMacKey is the attribute Key conforming to the "host.mac" semantic
- // conventions. It represents the available MAC addresses of the host, excluding
- // loopback interfaces.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F"
- // Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal form]: as
- // hyphen-separated octets in uppercase hexadecimal form from most to least
- // significant.
- //
- // [IEEE RA hexadecimal form]: https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf
- HostMacKey = attribute.Key("host.mac")
-
- // HostNameKey is the attribute Key conforming to the "host.name" semantic
- // conventions. It represents the name of the host. On Unix systems, it may
- // contain what the hostname command returns, or the fully qualified hostname,
- // or another name specified by the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry-test"
- HostNameKey = attribute.Key("host.name")
-
- // HostTypeKey is the attribute Key conforming to the "host.type" semantic
- // conventions. It represents the type of host. For Cloud, this must be the
- // machine type.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "n1-standard-1"
- HostTypeKey = attribute.Key("host.type")
-)
-
-// HostCPUCacheL2Size returns an attribute KeyValue conforming to the
-// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of
-// level 2 memory cache available to the processor (in Bytes).
-func HostCPUCacheL2Size(val int) attribute.KeyValue {
- return HostCPUCacheL2SizeKey.Int(val)
-}
-
-// HostCPUFamily returns an attribute KeyValue conforming to the
-// "host.cpu.family" semantic conventions. It represents the family or generation
-// of the CPU.
-func HostCPUFamily(val string) attribute.KeyValue {
- return HostCPUFamilyKey.String(val)
-}
-
-// HostCPUModelID returns an attribute KeyValue conforming to the
-// "host.cpu.model.id" semantic conventions. It represents the model identifier.
-// It provides more granular information about the CPU, distinguishing it from
-// other CPUs within the same family.
-func HostCPUModelID(val string) attribute.KeyValue {
- return HostCPUModelIDKey.String(val)
-}
-
-// HostCPUModelName returns an attribute KeyValue conforming to the
-// "host.cpu.model.name" semantic conventions. It represents the model
-// designation of the processor.
-func HostCPUModelName(val string) attribute.KeyValue {
- return HostCPUModelNameKey.String(val)
-}
-
-// HostCPUStepping returns an attribute KeyValue conforming to the
-// "host.cpu.stepping" semantic conventions. It represents the stepping or core
-// revisions.
-func HostCPUStepping(val string) attribute.KeyValue {
- return HostCPUSteppingKey.String(val)
-}
-
-// HostCPUVendorID returns an attribute KeyValue conforming to the
-// "host.cpu.vendor.id" semantic conventions. It represents the processor
-// manufacturer identifier. A maximum 12-character string.
-func HostCPUVendorID(val string) attribute.KeyValue {
- return HostCPUVendorIDKey.String(val)
-}
-
-// HostID returns an attribute KeyValue conforming to the "host.id" semantic
-// conventions. It represents the unique host ID. For Cloud, this must be the
-// instance_id assigned by the cloud provider. For non-containerized systems,
-// this should be the `machine-id`. See the table below for the sources to use to
-// determine the `machine-id` based on operating system.
-func HostID(val string) attribute.KeyValue {
- return HostIDKey.String(val)
-}
-
-// HostImageID returns an attribute KeyValue conforming to the "host.image.id"
-// semantic conventions. It represents the VM image ID or host OS image ID. For
-// Cloud, this value is from the provider.
-func HostImageID(val string) attribute.KeyValue {
- return HostImageIDKey.String(val)
-}
-
-// HostImageName returns an attribute KeyValue conforming to the
-// "host.image.name" semantic conventions. It represents the name of the VM image
-// or OS install the host was instantiated from.
-func HostImageName(val string) attribute.KeyValue {
- return HostImageNameKey.String(val)
-}
-
-// HostImageVersion returns an attribute KeyValue conforming to the
-// "host.image.version" semantic conventions. It represents the version string of
-// the VM image or host OS as defined in [Version Attributes].
-//
-// [Version Attributes]: /docs/resource/README.md#version-attributes
-func HostImageVersion(val string) attribute.KeyValue {
- return HostImageVersionKey.String(val)
-}
-
-// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic
-// conventions. It represents the available IP addresses of the host, excluding
-// loopback interfaces.
-func HostIP(val ...string) attribute.KeyValue {
- return HostIPKey.StringSlice(val)
-}
-
-// HostMac returns an attribute KeyValue conforming to the "host.mac" semantic
-// conventions. It represents the available MAC addresses of the host, excluding
-// loopback interfaces.
-func HostMac(val ...string) attribute.KeyValue {
- return HostMacKey.StringSlice(val)
-}
-
-// HostName returns an attribute KeyValue conforming to the "host.name" semantic
-// conventions. It represents the name of the host. On Unix systems, it may
-// contain what the hostname command returns, or the fully qualified hostname, or
-// another name specified by the user.
-func HostName(val string) attribute.KeyValue {
- return HostNameKey.String(val)
-}
-
-// HostType returns an attribute KeyValue conforming to the "host.type" semantic
-// conventions. It represents the type of host. For Cloud, this must be the
-// machine type.
-func HostType(val string) attribute.KeyValue {
- return HostTypeKey.String(val)
-}
-
-// Enum values for host.arch
-var (
- // AMD64
- // Stability: development
- HostArchAMD64 = HostArchKey.String("amd64")
- // ARM32
- // Stability: development
- HostArchARM32 = HostArchKey.String("arm32")
- // ARM64
- // Stability: development
- HostArchARM64 = HostArchKey.String("arm64")
- // Itanium
- // Stability: development
- HostArchIA64 = HostArchKey.String("ia64")
- // 32-bit PowerPC
- // Stability: development
- HostArchPPC32 = HostArchKey.String("ppc32")
- // 64-bit PowerPC
- // Stability: development
- HostArchPPC64 = HostArchKey.String("ppc64")
- // IBM z/Architecture
- // Stability: development
- HostArchS390x = HostArchKey.String("s390x")
- // 32-bit x86
- // Stability: development
- HostArchX86 = HostArchKey.String("x86")
-)
-
-// Namespace: http
-const (
- // HTTPConnectionStateKey is the attribute Key conforming to the
- // "http.connection.state" semantic conventions. It represents the state of the
- // HTTP connection in the HTTP connection pool.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "active", "idle"
- HTTPConnectionStateKey = attribute.Key("http.connection.state")
-
- // HTTPRequestBodySizeKey is the attribute Key conforming to the
- // "http.request.body.size" semantic conventions. It represents the size of the
- // request payload body in bytes. This is the number of bytes transferred
- // excluding headers and is often, but not always, present as the
- // [Content-Length] header. For requests using transport encoding, this should
- // be the compressed size.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
- HTTPRequestBodySizeKey = attribute.Key("http.request.body.size")
-
- // HTTPRequestMethodKey is the attribute Key conforming to the
- // "http.request.method" semantic conventions. It represents the HTTP request
- // method.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "GET", "POST", "HEAD"
- // Note: HTTP request method value SHOULD be "known" to the instrumentation.
- // By default, this convention defines "known" methods as the ones listed in
- // [RFC9110],
- // the PATCH method defined in [RFC5789]
- // and the QUERY method defined in [httpbis-safe-method-w-body].
- //
- // If the HTTP request method is not known to instrumentation, it MUST set the
- // `http.request.method` attribute to `_OTHER`.
- //
- // If the HTTP instrumentation could end up converting valid HTTP request
- // methods to `_OTHER`, then it MUST provide a way to override
- // the list of known HTTP methods. If this override is done via environment
- // variable, then the environment variable MUST be named
- // OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of
- // case-sensitive known HTTP methods.
- //
- //
- // If this override is done via declarative configuration, then the list MUST be
- // configurable via the `known_methods` property
- // (an array of case-sensitive strings with minimum items 0) under
- // `.instrumentation/development.general.http.client` and/or
- // `.instrumentation/development.general.http.server`.
- //
- // In either case, this list MUST be a full override of the default known
- // methods,
- // it is not a list of known methods in addition to the defaults.
- //
- // HTTP method names are case-sensitive and `http.request.method` attribute
- // value MUST match a known HTTP method name exactly.
- // Instrumentations for specific web frameworks that consider HTTP methods to be
- // case insensitive, SHOULD populate a canonical equivalent.
- // Tracing instrumentations that do so, MUST also set
- // `http.request.method_original` to the original value.
- //
- // [RFC9110]: https://www.rfc-editor.org/rfc/rfc9110.html#name-methods
- // [RFC5789]: https://www.rfc-editor.org/rfc/rfc5789.html
- // [httpbis-safe-method-w-body]: https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1
- HTTPRequestMethodKey = attribute.Key("http.request.method")
-
- // HTTPRequestMethodOriginalKey is the attribute Key conforming to the
- // "http.request.method_original" semantic conventions. It represents the
- // original HTTP method sent by the client in the request line.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "GeT", "ACL", "foo"
- HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original")
-
- // HTTPRequestResendCountKey is the attribute Key conforming to the
- // "http.request.resend_count" semantic conventions. It represents the ordinal
- // number of request resending attempt (for any reason, including redirects).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Note: The resend count SHOULD be updated each time an HTTP request gets
- // resent by the client, regardless of what was the cause of the resending (e.g.
- // redirection, authorization failure, 503 Server Unavailable, network issues,
- // or any other).
- HTTPRequestResendCountKey = attribute.Key("http.request.resend_count")
-
- // HTTPRequestSizeKey is the attribute Key conforming to the "http.request.size"
- // semantic conventions. It represents the total size of the request in bytes.
- // This should be the total number of bytes sent over the wire, including the
- // request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request
- // body if any.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- HTTPRequestSizeKey = attribute.Key("http.request.size")
-
- // HTTPResponseBodySizeKey is the attribute Key conforming to the
- // "http.response.body.size" semantic conventions. It represents the size of the
- // response payload body in bytes. This is the number of bytes transferred
- // excluding headers and is often, but not always, present as the
- // [Content-Length] header. For requests using transport encoding, this should
- // be the compressed size.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
- HTTPResponseBodySizeKey = attribute.Key("http.response.body.size")
-
- // HTTPResponseSizeKey is the attribute Key conforming to the
- // "http.response.size" semantic conventions. It represents the total size of
- // the response in bytes. This should be the total number of bytes sent over the
- // wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
- // headers, and response body and trailers if any.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- HTTPResponseSizeKey = attribute.Key("http.response.size")
-
- // HTTPResponseStatusCodeKey is the attribute Key conforming to the
- // "http.response.status_code" semantic conventions. It represents the
- // [HTTP response status code].
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 200
- //
- // [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6
- HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code")
-
- // HTTPRouteKey is the attribute Key conforming to the "http.route" semantic
- // conventions. It represents the matched route template for the request. This
- // MUST be low-cardinality and include all static path segments, with dynamic
- // path segments represented with placeholders.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "/users/:userID?", "my-controller/my-action/{id?}"
- // Note: MUST NOT be populated when this is not supported by the HTTP server
- // framework as the route attribute should have low-cardinality and the URI path
- // can NOT substitute it.
- // SHOULD include the [application root] if there is one.
- //
- // A static path segment is a part of the route template with a fixed,
- // low-cardinality value. This includes literal strings like `/users/` and
- // placeholders that
- // are constrained to a finite, predefined set of values, e.g. `{controller}` or
- // `{action}`.
- //
- // A dynamic path segment is a placeholder for a value that can have high
- // cardinality and is not constrained to a predefined list like static path
- // segments.
- //
- // Instrumentations SHOULD use routing information provided by the corresponding
- // web framework. They SHOULD pick the most precise source of routing
- // information and MAY
- // support custom route formatting. Instrumentations SHOULD document the format
- // and the API used to obtain the route string.
- //
- // [application root]: /docs/http/http-spans.md#http-server-definitions
- HTTPRouteKey = attribute.Key("http.route")
-)
-
-// HTTPRequestBodySize returns an attribute KeyValue conforming to the
-// "http.request.body.size" semantic conventions. It represents the size of the
-// request payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length] header. For requests using transport encoding, this should be
-// the compressed size.
-//
-// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
-func HTTPRequestBodySize(val int) attribute.KeyValue {
- return HTTPRequestBodySizeKey.Int(val)
-}
-
-// HTTPRequestHeader returns an attribute KeyValue conforming to the
-// "http.request.header" semantic conventions. It represents the HTTP request
-// headers, `` being the normalized HTTP Header name (lowercase), the value
-// being the header values.
-func HTTPRequestHeader(key string, val ...string) attribute.KeyValue {
- return attribute.StringSlice("http.request.header."+key, val)
-}
-
-// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the
-// "http.request.method_original" semantic conventions. It represents the
-// original HTTP method sent by the client in the request line.
-func HTTPRequestMethodOriginal(val string) attribute.KeyValue {
- return HTTPRequestMethodOriginalKey.String(val)
-}
-
-// HTTPRequestResendCount returns an attribute KeyValue conforming to the
-// "http.request.resend_count" semantic conventions. It represents the ordinal
-// number of request resending attempt (for any reason, including redirects).
-func HTTPRequestResendCount(val int) attribute.KeyValue {
- return HTTPRequestResendCountKey.Int(val)
-}
-
-// HTTPRequestSize returns an attribute KeyValue conforming to the
-// "http.request.size" semantic conventions. It represents the total size of the
-// request in bytes. This should be the total number of bytes sent over the wire,
-// including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers,
-// and request body if any.
-func HTTPRequestSize(val int) attribute.KeyValue {
- return HTTPRequestSizeKey.Int(val)
-}
-
-// HTTPResponseBodySize returns an attribute KeyValue conforming to the
-// "http.response.body.size" semantic conventions. It represents the size of the
-// response payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length] header. For requests using transport encoding, this should be
-// the compressed size.
-//
-// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length
-func HTTPResponseBodySize(val int) attribute.KeyValue {
- return HTTPResponseBodySizeKey.Int(val)
-}
-
-// HTTPResponseHeader returns an attribute KeyValue conforming to the
-// "http.response.header" semantic conventions. It represents the HTTP response
-// headers, `` being the normalized HTTP Header name (lowercase), the value
-// being the header values.
-func HTTPResponseHeader(key string, val ...string) attribute.KeyValue {
- return attribute.StringSlice("http.response.header."+key, val)
-}
-
-// HTTPResponseSize returns an attribute KeyValue conforming to the
-// "http.response.size" semantic conventions. It represents the total size of the
-// response in bytes. This should be the total number of bytes sent over the
-// wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
-// headers, and response body and trailers if any.
-func HTTPResponseSize(val int) attribute.KeyValue {
- return HTTPResponseSizeKey.Int(val)
-}
-
-// HTTPResponseStatusCode returns an attribute KeyValue conforming to the
-// "http.response.status_code" semantic conventions. It represents the
-// [HTTP response status code].
-//
-// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6
-func HTTPResponseStatusCode(val int) attribute.KeyValue {
- return HTTPResponseStatusCodeKey.Int(val)
-}
-
-// HTTPRoute returns an attribute KeyValue conforming to the "http.route"
-// semantic conventions. It represents the matched route template for the
-// request. This MUST be low-cardinality and include all static path segments,
-// with dynamic path segments represented with placeholders.
-func HTTPRoute(val string) attribute.KeyValue {
- return HTTPRouteKey.String(val)
-}
-
-// Enum values for http.connection.state
-var (
- // active state.
- // Stability: development
- HTTPConnectionStateActive = HTTPConnectionStateKey.String("active")
- // idle state.
- // Stability: development
- HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle")
-)
-
-// Enum values for http.request.method
-var (
- // CONNECT method.
- // Stability: stable
- HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT")
- // DELETE method.
- // Stability: stable
- HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE")
- // GET method.
- // Stability: stable
- HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET")
- // HEAD method.
- // Stability: stable
- HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD")
- // OPTIONS method.
- // Stability: stable
- HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS")
- // PATCH method.
- // Stability: stable
- HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH")
- // POST method.
- // Stability: stable
- HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST")
- // PUT method.
- // Stability: stable
- HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT")
- // TRACE method.
- // Stability: stable
- HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE")
- // QUERY method.
- // Stability: development
- HTTPRequestMethodQuery = HTTPRequestMethodKey.String("QUERY")
- // Any HTTP method that the instrumentation has no prior knowledge of.
- // Stability: stable
- HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER")
-)
-
-// Namespace: hw
-const (
- // HwBatteryCapacityKey is the attribute Key conforming to the
- // "hw.battery.capacity" semantic conventions. It represents the design capacity
- // in Watts-hours or Ampere-hours.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9.3Ah", "50Wh"
- HwBatteryCapacityKey = attribute.Key("hw.battery.capacity")
-
- // HwBatteryChemistryKey is the attribute Key conforming to the
- // "hw.battery.chemistry" semantic conventions. It represents the battery
- // [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Li-ion", "NiMH"
- //
- // [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html
- HwBatteryChemistryKey = attribute.Key("hw.battery.chemistry")
-
- // HwBatteryStateKey is the attribute Key conforming to the "hw.battery.state"
- // semantic conventions. It represents the current state of the battery.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwBatteryStateKey = attribute.Key("hw.battery.state")
-
- // HwBiosVersionKey is the attribute Key conforming to the "hw.bios_version"
- // semantic conventions. It represents the BIOS version of the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.2.3"
- HwBiosVersionKey = attribute.Key("hw.bios_version")
-
- // HwDriverVersionKey is the attribute Key conforming to the "hw.driver_version"
- // semantic conventions. It represents the driver version for the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10.2.1-3"
- HwDriverVersionKey = attribute.Key("hw.driver_version")
-
- // HwEnclosureTypeKey is the attribute Key conforming to the "hw.enclosure.type"
- // semantic conventions. It represents the type of the enclosure (useful for
- // modular systems).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Computer", "Storage", "Switch"
- HwEnclosureTypeKey = attribute.Key("hw.enclosure.type")
-
- // HwFirmwareVersionKey is the attribute Key conforming to the
- // "hw.firmware_version" semantic conventions. It represents the firmware
- // version of the hardware component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2.0.1"
- HwFirmwareVersionKey = attribute.Key("hw.firmware_version")
-
- // HwGpuTaskKey is the attribute Key conforming to the "hw.gpu.task" semantic
- // conventions. It represents the type of task the GPU is performing.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwGpuTaskKey = attribute.Key("hw.gpu.task")
-
- // HwIDKey is the attribute Key conforming to the "hw.id" semantic conventions.
- // It represents an identifier for the hardware component, unique within the
- // monitored host.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "win32battery_battery_testsysa33_1"
- HwIDKey = attribute.Key("hw.id")
-
- // HwLimitTypeKey is the attribute Key conforming to the "hw.limit_type"
- // semantic conventions. It represents the type of limit for hardware
- // components.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwLimitTypeKey = attribute.Key("hw.limit_type")
-
- // HwLogicalDiskRaidLevelKey is the attribute Key conforming to the
- // "hw.logical_disk.raid_level" semantic conventions. It represents the RAID
- // Level of the logical disk.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "RAID0+1", "RAID5", "RAID10"
- HwLogicalDiskRaidLevelKey = attribute.Key("hw.logical_disk.raid_level")
-
- // HwLogicalDiskStateKey is the attribute Key conforming to the
- // "hw.logical_disk.state" semantic conventions. It represents the state of the
- // logical disk space usage.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwLogicalDiskStateKey = attribute.Key("hw.logical_disk.state")
-
- // HwMemoryTypeKey is the attribute Key conforming to the "hw.memory.type"
- // semantic conventions. It represents the type of the memory module.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "DDR4", "DDR5", "LPDDR5"
- HwMemoryTypeKey = attribute.Key("hw.memory.type")
-
- // HwModelKey is the attribute Key conforming to the "hw.model" semantic
- // conventions. It represents the descriptive model name of the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "PERC H740P", "Intel(R) Core(TM) i7-10700K", "Dell XPS 15 Battery"
- HwModelKey = attribute.Key("hw.model")
-
- // HwNameKey is the attribute Key conforming to the "hw.name" semantic
- // conventions. It represents an easily-recognizable name for the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "eth0"
- HwNameKey = attribute.Key("hw.name")
-
- // HwNetworkLogicalAddressesKey is the attribute Key conforming to the
- // "hw.network.logical_addresses" semantic conventions. It represents the
- // logical addresses of the adapter (e.g. IP address, or WWPN).
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "172.16.8.21", "57.11.193.42"
- HwNetworkLogicalAddressesKey = attribute.Key("hw.network.logical_addresses")
-
- // HwNetworkPhysicalAddressKey is the attribute Key conforming to the
- // "hw.network.physical_address" semantic conventions. It represents the
- // physical address of the adapter (e.g. MAC address, or WWNN).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "00-90-F5-E9-7B-36"
- HwNetworkPhysicalAddressKey = attribute.Key("hw.network.physical_address")
-
- // HwParentKey is the attribute Key conforming to the "hw.parent" semantic
- // conventions. It represents the unique identifier of the parent component
- // (typically the `hw.id` attribute of the enclosure, or disk controller).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "dellStorage_perc_0"
- HwParentKey = attribute.Key("hw.parent")
-
- // HwPhysicalDiskSmartAttributeKey is the attribute Key conforming to the
- // "hw.physical_disk.smart_attribute" semantic conventions. It represents the
- // [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute
- // of the physical disk.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Spin Retry Count", "Seek Error Rate", "Raw Read Error Rate"
- //
- // [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T.
- HwPhysicalDiskSmartAttributeKey = attribute.Key("hw.physical_disk.smart_attribute")
-
- // HwPhysicalDiskStateKey is the attribute Key conforming to the
- // "hw.physical_disk.state" semantic conventions. It represents the state of the
- // physical disk endurance utilization.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwPhysicalDiskStateKey = attribute.Key("hw.physical_disk.state")
-
- // HwPhysicalDiskTypeKey is the attribute Key conforming to the
- // "hw.physical_disk.type" semantic conventions. It represents the type of the
- // physical disk.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "HDD", "SSD", "10K"
- HwPhysicalDiskTypeKey = attribute.Key("hw.physical_disk.type")
-
- // HwSensorLocationKey is the attribute Key conforming to the
- // "hw.sensor_location" semantic conventions. It represents the location of the
- // sensor.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cpu0", "ps1", "INLET", "CPU0_DIE", "AMBIENT", "MOTHERBOARD", "PS0
- // V3_3", "MAIN_12V", "CPU_VCORE"
- HwSensorLocationKey = attribute.Key("hw.sensor_location")
-
- // HwSerialNumberKey is the attribute Key conforming to the "hw.serial_number"
- // semantic conventions. It represents the serial number of the hardware
- // component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CNFCP0123456789"
- HwSerialNumberKey = attribute.Key("hw.serial_number")
-
- // HwStateKey is the attribute Key conforming to the "hw.state" semantic
- // conventions. It represents the current state of the component.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwStateKey = attribute.Key("hw.state")
-
- // HwTapeDriveOperationTypeKey is the attribute Key conforming to the
- // "hw.tape_drive.operation_type" semantic conventions. It represents the type
- // of tape drive operation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- HwTapeDriveOperationTypeKey = attribute.Key("hw.tape_drive.operation_type")
-
- // HwTypeKey is the attribute Key conforming to the "hw.type" semantic
- // conventions. It represents the type of the component.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: Describes the category of the hardware component for which `hw.state`
- // is being reported. For example, `hw.type=temperature` along with
- // `hw.state=degraded` would indicate that the temperature of the hardware
- // component has been reported as `degraded`.
- HwTypeKey = attribute.Key("hw.type")
-
- // HwVendorKey is the attribute Key conforming to the "hw.vendor" semantic
- // conventions. It represents the vendor name of the hardware component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Dell", "HP", "Intel", "AMD", "LSI", "Lenovo"
- HwVendorKey = attribute.Key("hw.vendor")
-)
-
-// HwBatteryCapacity returns an attribute KeyValue conforming to the
-// "hw.battery.capacity" semantic conventions. It represents the design capacity
-// in Watts-hours or Ampere-hours.
-func HwBatteryCapacity(val string) attribute.KeyValue {
- return HwBatteryCapacityKey.String(val)
-}
-
-// HwBatteryChemistry returns an attribute KeyValue conforming to the
-// "hw.battery.chemistry" semantic conventions. It represents the battery
-// [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc.
-//
-// [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html
-func HwBatteryChemistry(val string) attribute.KeyValue {
- return HwBatteryChemistryKey.String(val)
-}
-
-// HwBiosVersion returns an attribute KeyValue conforming to the
-// "hw.bios_version" semantic conventions. It represents the BIOS version of the
-// hardware component.
-func HwBiosVersion(val string) attribute.KeyValue {
- return HwBiosVersionKey.String(val)
-}
-
-// HwDriverVersion returns an attribute KeyValue conforming to the
-// "hw.driver_version" semantic conventions. It represents the driver version for
-// the hardware component.
-func HwDriverVersion(val string) attribute.KeyValue {
- return HwDriverVersionKey.String(val)
-}
-
-// HwEnclosureType returns an attribute KeyValue conforming to the
-// "hw.enclosure.type" semantic conventions. It represents the type of the
-// enclosure (useful for modular systems).
-func HwEnclosureType(val string) attribute.KeyValue {
- return HwEnclosureTypeKey.String(val)
-}
-
-// HwFirmwareVersion returns an attribute KeyValue conforming to the
-// "hw.firmware_version" semantic conventions. It represents the firmware version
-// of the hardware component.
-func HwFirmwareVersion(val string) attribute.KeyValue {
- return HwFirmwareVersionKey.String(val)
-}
-
-// HwID returns an attribute KeyValue conforming to the "hw.id" semantic
-// conventions. It represents an identifier for the hardware component, unique
-// within the monitored host.
-func HwID(val string) attribute.KeyValue {
- return HwIDKey.String(val)
-}
-
-// HwLogicalDiskRaidLevel returns an attribute KeyValue conforming to the
-// "hw.logical_disk.raid_level" semantic conventions. It represents the RAID
-// Level of the logical disk.
-func HwLogicalDiskRaidLevel(val string) attribute.KeyValue {
- return HwLogicalDiskRaidLevelKey.String(val)
-}
-
-// HwMemoryType returns an attribute KeyValue conforming to the "hw.memory.type"
-// semantic conventions. It represents the type of the memory module.
-func HwMemoryType(val string) attribute.KeyValue {
- return HwMemoryTypeKey.String(val)
-}
-
-// HwModel returns an attribute KeyValue conforming to the "hw.model" semantic
-// conventions. It represents the descriptive model name of the hardware
-// component.
-func HwModel(val string) attribute.KeyValue {
- return HwModelKey.String(val)
-}
-
-// HwName returns an attribute KeyValue conforming to the "hw.name" semantic
-// conventions. It represents an easily-recognizable name for the hardware
-// component.
-func HwName(val string) attribute.KeyValue {
- return HwNameKey.String(val)
-}
-
-// HwNetworkLogicalAddresses returns an attribute KeyValue conforming to the
-// "hw.network.logical_addresses" semantic conventions. It represents the logical
-// addresses of the adapter (e.g. IP address, or WWPN).
-func HwNetworkLogicalAddresses(val ...string) attribute.KeyValue {
- return HwNetworkLogicalAddressesKey.StringSlice(val)
-}
-
-// HwNetworkPhysicalAddress returns an attribute KeyValue conforming to the
-// "hw.network.physical_address" semantic conventions. It represents the physical
-// address of the adapter (e.g. MAC address, or WWNN).
-func HwNetworkPhysicalAddress(val string) attribute.KeyValue {
- return HwNetworkPhysicalAddressKey.String(val)
-}
-
-// HwParent returns an attribute KeyValue conforming to the "hw.parent" semantic
-// conventions. It represents the unique identifier of the parent component
-// (typically the `hw.id` attribute of the enclosure, or disk controller).
-func HwParent(val string) attribute.KeyValue {
- return HwParentKey.String(val)
-}
-
-// HwPhysicalDiskSmartAttribute returns an attribute KeyValue conforming to the
-// "hw.physical_disk.smart_attribute" semantic conventions. It represents the
-// [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute
-// of the physical disk.
-//
-// [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T.
-func HwPhysicalDiskSmartAttribute(val string) attribute.KeyValue {
- return HwPhysicalDiskSmartAttributeKey.String(val)
-}
-
-// HwPhysicalDiskType returns an attribute KeyValue conforming to the
-// "hw.physical_disk.type" semantic conventions. It represents the type of the
-// physical disk.
-func HwPhysicalDiskType(val string) attribute.KeyValue {
- return HwPhysicalDiskTypeKey.String(val)
-}
-
-// HwSensorLocation returns an attribute KeyValue conforming to the
-// "hw.sensor_location" semantic conventions. It represents the location of the
-// sensor.
-func HwSensorLocation(val string) attribute.KeyValue {
- return HwSensorLocationKey.String(val)
-}
-
-// HwSerialNumber returns an attribute KeyValue conforming to the
-// "hw.serial_number" semantic conventions. It represents the serial number of
-// the hardware component.
-func HwSerialNumber(val string) attribute.KeyValue {
- return HwSerialNumberKey.String(val)
-}
-
-// HwVendor returns an attribute KeyValue conforming to the "hw.vendor" semantic
-// conventions. It represents the vendor name of the hardware component.
-func HwVendor(val string) attribute.KeyValue {
- return HwVendorKey.String(val)
-}
-
-// Enum values for hw.battery.state
-var (
- // Charging
- // Stability: development
- HwBatteryStateCharging = HwBatteryStateKey.String("charging")
- // Discharging
- // Stability: development
- HwBatteryStateDischarging = HwBatteryStateKey.String("discharging")
-)
-
-// Enum values for hw.gpu.task
-var (
- // Decoder
- // Stability: development
- HwGpuTaskDecoder = HwGpuTaskKey.String("decoder")
- // Encoder
- // Stability: development
- HwGpuTaskEncoder = HwGpuTaskKey.String("encoder")
- // General
- // Stability: development
- HwGpuTaskGeneral = HwGpuTaskKey.String("general")
-)
-
-// Enum values for hw.limit_type
-var (
- // Critical
- // Stability: development
- HwLimitTypeCritical = HwLimitTypeKey.String("critical")
- // Degraded
- // Stability: development
- HwLimitTypeDegraded = HwLimitTypeKey.String("degraded")
- // High Critical
- // Stability: development
- HwLimitTypeHighCritical = HwLimitTypeKey.String("high.critical")
- // High Degraded
- // Stability: development
- HwLimitTypeHighDegraded = HwLimitTypeKey.String("high.degraded")
- // Low Critical
- // Stability: development
- HwLimitTypeLowCritical = HwLimitTypeKey.String("low.critical")
- // Low Degraded
- // Stability: development
- HwLimitTypeLowDegraded = HwLimitTypeKey.String("low.degraded")
- // Maximum
- // Stability: development
- HwLimitTypeMax = HwLimitTypeKey.String("max")
- // Throttled
- // Stability: development
- HwLimitTypeThrottled = HwLimitTypeKey.String("throttled")
- // Turbo
- // Stability: development
- HwLimitTypeTurbo = HwLimitTypeKey.String("turbo")
-)
-
-// Enum values for hw.logical_disk.state
-var (
- // Used
- // Stability: development
- HwLogicalDiskStateUsed = HwLogicalDiskStateKey.String("used")
- // Free
- // Stability: development
- HwLogicalDiskStateFree = HwLogicalDiskStateKey.String("free")
-)
-
-// Enum values for hw.physical_disk.state
-var (
- // Remaining
- // Stability: development
- HwPhysicalDiskStateRemaining = HwPhysicalDiskStateKey.String("remaining")
-)
-
-// Enum values for hw.state
-var (
- // Degraded
- // Stability: development
- HwStateDegraded = HwStateKey.String("degraded")
- // Failed
- // Stability: development
- HwStateFailed = HwStateKey.String("failed")
- // Needs Cleaning
- // Stability: development
- HwStateNeedsCleaning = HwStateKey.String("needs_cleaning")
- // OK
- // Stability: development
- HwStateOk = HwStateKey.String("ok")
- // Predicted Failure
- // Stability: development
- HwStatePredictedFailure = HwStateKey.String("predicted_failure")
-)
-
-// Enum values for hw.tape_drive.operation_type
-var (
- // Mount
- // Stability: development
- HwTapeDriveOperationTypeMount = HwTapeDriveOperationTypeKey.String("mount")
- // Unmount
- // Stability: development
- HwTapeDriveOperationTypeUnmount = HwTapeDriveOperationTypeKey.String("unmount")
- // Clean
- // Stability: development
- HwTapeDriveOperationTypeClean = HwTapeDriveOperationTypeKey.String("clean")
-)
-
-// Enum values for hw.type
-var (
- // Battery
- // Stability: development
- HwTypeBattery = HwTypeKey.String("battery")
- // CPU
- // Stability: development
- HwTypeCPU = HwTypeKey.String("cpu")
- // Disk controller
- // Stability: development
- HwTypeDiskController = HwTypeKey.String("disk_controller")
- // Enclosure
- // Stability: development
- HwTypeEnclosure = HwTypeKey.String("enclosure")
- // Fan
- // Stability: development
- HwTypeFan = HwTypeKey.String("fan")
- // GPU
- // Stability: development
- HwTypeGpu = HwTypeKey.String("gpu")
- // Logical disk
- // Stability: development
- HwTypeLogicalDisk = HwTypeKey.String("logical_disk")
- // Memory
- // Stability: development
- HwTypeMemory = HwTypeKey.String("memory")
- // Network
- // Stability: development
- HwTypeNetwork = HwTypeKey.String("network")
- // Physical disk
- // Stability: development
- HwTypePhysicalDisk = HwTypeKey.String("physical_disk")
- // Power supply
- // Stability: development
- HwTypePowerSupply = HwTypeKey.String("power_supply")
- // Tape drive
- // Stability: development
- HwTypeTapeDrive = HwTypeKey.String("tape_drive")
- // Temperature
- // Stability: development
- HwTypeTemperature = HwTypeKey.String("temperature")
- // Voltage
- // Stability: development
- HwTypeVoltage = HwTypeKey.String("voltage")
-)
-
-// Namespace: ios
-const (
- // IOSAppStateKey is the attribute Key conforming to the "ios.app.state"
- // semantic conventions. It represents the this attribute represents the state
- // of the application.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The iOS lifecycle states are defined in the
- // [UIApplicationDelegate documentation], and from which the `OS terminology`
- // column values are derived.
- //
- // [UIApplicationDelegate documentation]: https://developer.apple.com/documentation/uikit/uiapplicationdelegate
- IOSAppStateKey = attribute.Key("ios.app.state")
-)
-
-// Enum values for ios.app.state
-var (
- // The app has become `active`. Associated with UIKit notification
- // `applicationDidBecomeActive`.
- //
- // Stability: development
- IOSAppStateActive = IOSAppStateKey.String("active")
- // The app is now `inactive`. Associated with UIKit notification
- // `applicationWillResignActive`.
- //
- // Stability: development
- IOSAppStateInactive = IOSAppStateKey.String("inactive")
- // The app is now in the background. This value is associated with UIKit
- // notification `applicationDidEnterBackground`.
- //
- // Stability: development
- IOSAppStateBackground = IOSAppStateKey.String("background")
- // The app is now in the foreground. This value is associated with UIKit
- // notification `applicationWillEnterForeground`.
- //
- // Stability: development
- IOSAppStateForeground = IOSAppStateKey.String("foreground")
- // The app is about to terminate. Associated with UIKit notification
- // `applicationWillTerminate`.
- //
- // Stability: development
- IOSAppStateTerminate = IOSAppStateKey.String("terminate")
-)
-
-// Namespace: jsonrpc
-const (
- // JSONRPCProtocolVersionKey is the attribute Key conforming to the
- // "jsonrpc.protocol.version" semantic conventions. It represents the protocol
- // version, as specified in the `jsonrpc` property of the request and its
- // corresponding response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2.0", "1.0"
- JSONRPCProtocolVersionKey = attribute.Key("jsonrpc.protocol.version")
-
- // JSONRPCRequestIDKey is the attribute Key conforming to the
- // "jsonrpc.request.id" semantic conventions. It represents a string
- // representation of the `id` property of the request and its corresponding
- // response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "10", "request-7"
- // Note: Under the [JSON-RPC specification], the `id` property may be a string,
- // number, null, or omitted entirely. When omitted, the request is treated as a
- // notification. Using `null` is not equivalent to omitting the `id`, but it is
- // discouraged.
- // Instrumentations SHOULD NOT capture this attribute when the `id` is `null` or
- // omitted.
- //
- // [JSON-RPC specification]: https://www.jsonrpc.org/specification
- JSONRPCRequestIDKey = attribute.Key("jsonrpc.request.id")
-)
-
-// JSONRPCProtocolVersion returns an attribute KeyValue conforming to the
-// "jsonrpc.protocol.version" semantic conventions. It represents the protocol
-// version, as specified in the `jsonrpc` property of the request and its
-// corresponding response.
-func JSONRPCProtocolVersion(val string) attribute.KeyValue {
- return JSONRPCProtocolVersionKey.String(val)
-}
-
-// JSONRPCRequestID returns an attribute KeyValue conforming to the
-// "jsonrpc.request.id" semantic conventions. It represents a string
-// representation of the `id` property of the request and its corresponding
-// response.
-func JSONRPCRequestID(val string) attribute.KeyValue {
- return JSONRPCRequestIDKey.String(val)
-}
-
-// Namespace: k8s
-const (
- // K8SClusterNameKey is the attribute Key conforming to the "k8s.cluster.name"
- // semantic conventions. It represents the name of the cluster.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry-cluster"
- K8SClusterNameKey = attribute.Key("k8s.cluster.name")
-
- // K8SClusterUIDKey is the attribute Key conforming to the "k8s.cluster.uid"
- // semantic conventions. It represents a pseudo-ID for the cluster, set to the
- // UID of the `kube-system` namespace.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d"
- // Note: K8s doesn't have support for obtaining a cluster ID. If this is ever
- // added, we will recommend collecting the `k8s.cluster.uid` through the
- // official APIs. In the meantime, we are able to use the `uid` of the
- // `kube-system` namespace as a proxy for cluster ID. Read on for the
- // rationale.
- //
- // Every object created in a K8s cluster is assigned a distinct UID. The
- // `kube-system` namespace is used by Kubernetes itself and will exist
- // for the lifetime of the cluster. Using the `uid` of the `kube-system`
- // namespace is a reasonable proxy for the K8s ClusterID as it will only
- // change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
- // UUIDs as standardized by
- // [ISO/IEC 9834-8 and ITU-T X.667].
- // Which states:
- //
- // > If generated according to one of the mechanisms defined in Rec.
- // > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be
- // > different from all other UUIDs generated before 3603 A.D., or is
- // > extremely likely to be different (depending on the mechanism chosen).
- //
- // Therefore, UIDs between clusters should be extremely unlikely to
- // conflict.
- //
- // [ISO/IEC 9834-8 and ITU-T X.667]: https://www.itu.int/ITU-T/studygroups/com17/oid.html
- K8SClusterUIDKey = attribute.Key("k8s.cluster.uid")
-
- // K8SContainerNameKey is the attribute Key conforming to the
- // "k8s.container.name" semantic conventions. It represents the name of the
- // Container from Pod specification, must be unique within a Pod. Container
- // runtime usually uses different globally unique name (`container.name`).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "redis"
- K8SContainerNameKey = attribute.Key("k8s.container.name")
-
- // K8SContainerRestartCountKey is the attribute Key conforming to the
- // "k8s.container.restart_count" semantic conventions. It represents the number
- // of times the container was restarted. This attribute can be used to identify
- // a particular container (running or stopped) within a container spec.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples:
- K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count")
-
- // K8SContainerStatusLastTerminatedReasonKey is the attribute Key conforming to
- // the "k8s.container.status.last_terminated_reason" semantic conventions. It
- // represents the last terminated reason of the Container.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Evicted", "Error"
- K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason")
-
- // K8SContainerStatusReasonKey is the attribute Key conforming to the
- // "k8s.container.status.reason" semantic conventions. It represents the reason
- // for the container state. Corresponds to the `reason` field of the:
- // [K8s ContainerStateWaiting] or [K8s ContainerStateTerminated].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ContainerCreating", "CrashLoopBackOff",
- // "CreateContainerConfigError", "ErrImagePull", "ImagePullBackOff",
- // "OOMKilled", "Completed", "Error", "ContainerCannotRun"
- //
- // [K8s ContainerStateWaiting]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core
- // [K8s ContainerStateTerminated]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core
- K8SContainerStatusReasonKey = attribute.Key("k8s.container.status.reason")
-
- // K8SContainerStatusStateKey is the attribute Key conforming to the
- // "k8s.container.status.state" semantic conventions. It represents the state of
- // the container. [K8s ContainerState].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "terminated", "running", "waiting"
- //
- // [K8s ContainerState]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core
- K8SContainerStatusStateKey = attribute.Key("k8s.container.status.state")
-
- // K8SCronJobNameKey is the attribute Key conforming to the "k8s.cronjob.name"
- // semantic conventions. It represents the name of the CronJob.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SCronJobNameKey = attribute.Key("k8s.cronjob.name")
-
- // K8SCronJobUIDKey is the attribute Key conforming to the "k8s.cronjob.uid"
- // semantic conventions. It represents the UID of the CronJob.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid")
-
- // K8SDaemonSetNameKey is the attribute Key conforming to the
- // "k8s.daemonset.name" semantic conventions. It represents the name of the
- // DaemonSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name")
-
- // K8SDaemonSetUIDKey is the attribute Key conforming to the "k8s.daemonset.uid"
- // semantic conventions. It represents the UID of the DaemonSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid")
-
- // K8SDeploymentNameKey is the attribute Key conforming to the
- // "k8s.deployment.name" semantic conventions. It represents the name of the
- // Deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SDeploymentNameKey = attribute.Key("k8s.deployment.name")
-
- // K8SDeploymentUIDKey is the attribute Key conforming to the
- // "k8s.deployment.uid" semantic conventions. It represents the UID of the
- // Deployment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid")
-
- // K8SHPAMetricTypeKey is the attribute Key conforming to the
- // "k8s.hpa.metric.type" semantic conventions. It represents the type of metric
- // source for the horizontal pod autoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Resource", "ContainerResource"
- // Note: This attribute reflects the `type` field of spec.metrics[] in the HPA.
- K8SHPAMetricTypeKey = attribute.Key("k8s.hpa.metric.type")
-
- // K8SHPANameKey is the attribute Key conforming to the "k8s.hpa.name" semantic
- // conventions. It represents the name of the horizontal pod autoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SHPANameKey = attribute.Key("k8s.hpa.name")
-
- // K8SHPAScaletargetrefAPIVersionKey is the attribute Key conforming to the
- // "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the
- // API version of the target resource to scale for the HorizontalPodAutoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "apps/v1", "autoscaling/v2"
- // Note: This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA
- // spec.
- K8SHPAScaletargetrefAPIVersionKey = attribute.Key("k8s.hpa.scaletargetref.api_version")
-
- // K8SHPAScaletargetrefKindKey is the attribute Key conforming to the
- // "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of
- // the target resource to scale for the HorizontalPodAutoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Deployment", "StatefulSet"
- // Note: This maps to the `kind` field in the `scaleTargetRef` of the HPA spec.
- K8SHPAScaletargetrefKindKey = attribute.Key("k8s.hpa.scaletargetref.kind")
-
- // K8SHPAScaletargetrefNameKey is the attribute Key conforming to the
- // "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of
- // the target resource to scale for the HorizontalPodAutoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-deployment", "my-statefulset"
- // Note: This maps to the `name` field in the `scaleTargetRef` of the HPA spec.
- K8SHPAScaletargetrefNameKey = attribute.Key("k8s.hpa.scaletargetref.name")
-
- // K8SHPAUIDKey is the attribute Key conforming to the "k8s.hpa.uid" semantic
- // conventions. It represents the UID of the horizontal pod autoscaler.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SHPAUIDKey = attribute.Key("k8s.hpa.uid")
-
- // K8SHugepageSizeKey is the attribute Key conforming to the "k8s.hugepage.size"
- // semantic conventions. It represents the size (identifier) of the K8s huge
- // page.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2Mi"
- K8SHugepageSizeKey = attribute.Key("k8s.hugepage.size")
-
- // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" semantic
- // conventions. It represents the name of the Job.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SJobNameKey = attribute.Key("k8s.job.name")
-
- // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" semantic
- // conventions. It represents the UID of the Job.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SJobUIDKey = attribute.Key("k8s.job.uid")
-
- // K8SNamespaceNameKey is the attribute Key conforming to the
- // "k8s.namespace.name" semantic conventions. It represents the name of the
- // namespace that the pod is running in.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "default"
- K8SNamespaceNameKey = attribute.Key("k8s.namespace.name")
-
- // K8SNamespacePhaseKey is the attribute Key conforming to the
- // "k8s.namespace.phase" semantic conventions. It represents the phase of the
- // K8s namespace.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "active", "terminating"
- // Note: This attribute aligns with the `phase` field of the
- // [K8s NamespaceStatus]
- //
- // [K8s NamespaceStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core
- K8SNamespacePhaseKey = attribute.Key("k8s.namespace.phase")
-
- // K8SNodeConditionStatusKey is the attribute Key conforming to the
- // "k8s.node.condition.status" semantic conventions. It represents the status of
- // the condition, one of True, False, Unknown.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "true", "false", "unknown"
- // Note: This attribute aligns with the `status` field of the
- // [NodeCondition]
- //
- // [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core
- K8SNodeConditionStatusKey = attribute.Key("k8s.node.condition.status")
-
- // K8SNodeConditionTypeKey is the attribute Key conforming to the
- // "k8s.node.condition.type" semantic conventions. It represents the condition
- // type of a K8s Node.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Ready", "DiskPressure"
- // Note: K8s Node conditions as described
- // by [K8s documentation].
- //
- // This attribute aligns with the `type` field of the
- // [NodeCondition]
- //
- // The set of possible values is not limited to those listed here. Managed
- // Kubernetes environments,
- // or custom controllers MAY introduce additional node condition types.
- // When this occurs, the exact value as reported by the Kubernetes API SHOULD be
- // used.
- //
- // [K8s documentation]: https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition
- // [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core
- K8SNodeConditionTypeKey = attribute.Key("k8s.node.condition.type")
-
- // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name"
- // semantic conventions. It represents the name of the Node.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "node-1"
- K8SNodeNameKey = attribute.Key("k8s.node.name")
-
- // K8SNodeSystemContainerNameKey is the attribute Key conforming to the
- // "k8s.node.system_container.name" semantic conventions. It represents the name
- // of the system container running on the K8s Node.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "kubelet", "runtime", "pods", "misc"
- K8SNodeSystemContainerNameKey = attribute.Key("k8s.node.system_container.name")
-
- // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" semantic
- // conventions. It represents the UID of the Node.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2"
- K8SNodeUIDKey = attribute.Key("k8s.node.uid")
-
- // K8SPersistentvolumeNameKey is the attribute Key conforming to the
- // "k8s.persistentvolume.name" semantic conventions. It represents the name of
- // the PersistentVolume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pv-data-01"
- K8SPersistentvolumeNameKey = attribute.Key("k8s.persistentvolume.name")
-
- // K8SPersistentvolumeReclaimPolicyKey is the attribute Key conforming to the
- // "k8s.persistentvolume.reclaim_policy" semantic conventions. It represents the
- // reclaim policy of the PersistentVolume.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Delete", "Retain", "Recycle"
- // Note: This attribute aligns with the `persistentVolumeReclaimPolicy` field of
- // the
- // [K8s PersistentVolumeSpec].
- //
- // [K8s PersistentVolumeSpec]: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-v1/#PersistentVolumeSpec
- K8SPersistentvolumeReclaimPolicyKey = attribute.Key("k8s.persistentvolume.reclaim_policy")
-
- // K8SPersistentvolumeStatusPhaseKey is the attribute Key conforming to the
- // "k8s.persistentvolume.status.phase" semantic conventions. It represents the
- // phase of the PersistentVolume.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Pending", "Available", "Bound", "Released", "Failed"
- // Note: This attribute aligns with the `phase` field of the
- // [K8s PersistentVolumeStatus].
- //
- // [K8s PersistentVolumeStatus]: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-v1/#PersistentVolumeStatus
- K8SPersistentvolumeStatusPhaseKey = attribute.Key("k8s.persistentvolume.status.phase")
-
- // K8SPersistentvolumeUIDKey is the attribute Key conforming to the
- // "k8s.persistentvolume.uid" semantic conventions. It represents the UID of the
- // PersistentVolume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SPersistentvolumeUIDKey = attribute.Key("k8s.persistentvolume.uid")
-
- // K8SPersistentvolumeclaimNameKey is the attribute Key conforming to the
- // "k8s.persistentvolumeclaim.name" semantic conventions. It represents the name
- // of the PersistentVolumeClaim.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pvc-data-01"
- K8SPersistentvolumeclaimNameKey = attribute.Key("k8s.persistentvolumeclaim.name")
-
- // K8SPersistentvolumeclaimStatusPhaseKey is the attribute Key conforming to the
- // "k8s.persistentvolumeclaim.status.phase" semantic conventions. It represents
- // the phase of the PersistentVolumeClaim.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Pending", "Bound", "Lost"
- // Note: This attribute aligns with the `phase` field of the
- // [K8s PersistentVolumeClaimStatus].
- //
- // [K8s PersistentVolumeClaimStatus]: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#PersistentVolumeClaimStatus
- K8SPersistentvolumeclaimStatusPhaseKey = attribute.Key("k8s.persistentvolumeclaim.status.phase")
-
- // K8SPersistentvolumeclaimUIDKey is the attribute Key conforming to the
- // "k8s.persistentvolumeclaim.uid" semantic conventions. It represents the UID
- // of the PersistentVolumeClaim.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SPersistentvolumeclaimUIDKey = attribute.Key("k8s.persistentvolumeclaim.uid")
-
- // K8SPodHostnameKey is the attribute Key conforming to the "k8s.pod.hostname"
- // semantic conventions. It represents the specifies the hostname of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "collector-gateway"
- // Note: The K8s Pod spec has an optional hostname field, which can be used to
- // specify a hostname.
- // Refer to [K8s docs]
- // for more information about this field.
- //
- // This attribute aligns with the `hostname` field of the
- // [K8s PodSpec].
- //
- // [K8s docs]: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field
- // [K8s PodSpec]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core
- K8SPodHostnameKey = attribute.Key("k8s.pod.hostname")
-
- // K8SPodIPKey is the attribute Key conforming to the "k8s.pod.ip" semantic
- // conventions. It represents the IP address allocated to the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "172.18.0.2"
- // Note: This attribute aligns with the `podIP` field of the
- // [K8s PodStatus].
- //
- // [K8s PodStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core
- K8SPodIPKey = attribute.Key("k8s.pod.ip")
-
- // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" semantic
- // conventions. It represents the name of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry-pod-autoconf"
- K8SPodNameKey = attribute.Key("k8s.pod.name")
-
- // K8SPodStartTimeKey is the attribute Key conforming to the
- // "k8s.pod.start_time" semantic conventions. It represents the start timestamp
- // of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "2025-12-04T08:41:03Z"
- // Note: Date and time at which the object was acknowledged by the Kubelet.
- // This is before the Kubelet pulled the container image(s) for the pod.
- //
- // This attribute aligns with the `startTime` field of the
- // [K8s PodStatus],
- // in ISO 8601 (RFC 3339 compatible) format.
- //
- // [K8s PodStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core
- K8SPodStartTimeKey = attribute.Key("k8s.pod.start_time")
-
- // K8SPodStatusPhaseKey is the attribute Key conforming to the
- // "k8s.pod.status.phase" semantic conventions. It represents the phase for the
- // pod. Corresponds to the `phase` field of the: [K8s PodStatus].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Pending", "Running"
- //
- // [K8s PodStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core
- K8SPodStatusPhaseKey = attribute.Key("k8s.pod.status.phase")
-
- // K8SPodStatusReasonKey is the attribute Key conforming to the
- // "k8s.pod.status.reason" semantic conventions. It represents the reason for
- // the pod state. Corresponds to the `reason` field of the: [K8s PodStatus].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Evicted", "NodeAffinity"
- //
- // [K8s PodStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core
- K8SPodStatusReasonKey = attribute.Key("k8s.pod.status.reason")
-
- // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" semantic
- // conventions. It represents the UID of the Pod.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SPodUIDKey = attribute.Key("k8s.pod.uid")
-
- // K8SReplicaSetNameKey is the attribute Key conforming to the
- // "k8s.replicaset.name" semantic conventions. It represents the name of the
- // ReplicaSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name")
-
- // K8SReplicaSetUIDKey is the attribute Key conforming to the
- // "k8s.replicaset.uid" semantic conventions. It represents the UID of the
- // ReplicaSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid")
-
- // K8SReplicationControllerNameKey is the attribute Key conforming to the
- // "k8s.replicationcontroller.name" semantic conventions. It represents the name
- // of the replication controller.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SReplicationControllerNameKey = attribute.Key("k8s.replicationcontroller.name")
-
- // K8SReplicationControllerUIDKey is the attribute Key conforming to the
- // "k8s.replicationcontroller.uid" semantic conventions. It represents the UID
- // of the replication controller.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SReplicationControllerUIDKey = attribute.Key("k8s.replicationcontroller.uid")
-
- // K8SResourceQuotaNameKey is the attribute Key conforming to the
- // "k8s.resourcequota.name" semantic conventions. It represents the name of the
- // resource quota.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- K8SResourceQuotaNameKey = attribute.Key("k8s.resourcequota.name")
-
- // K8SResourceQuotaResourceNameKey is the attribute Key conforming to the
- // "k8s.resourcequota.resource_name" semantic conventions. It represents the
- // name of the K8s resource a resource quota defines.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "count/replicationcontrollers"
- // Note: The value for this attribute can be either the full
- // `count/[.]` string (e.g., count/deployments.apps,
- // count/pods), or, for certain core Kubernetes resources, just the resource
- // name (e.g., pods, services, configmaps). Both forms are supported by
- // Kubernetes for object count quotas. See
- // [Kubernetes Resource Quotas documentation] for more details.
- //
- // [Kubernetes Resource Quotas documentation]: https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count
- K8SResourceQuotaResourceNameKey = attribute.Key("k8s.resourcequota.resource_name")
-
- // K8SResourceQuotaUIDKey is the attribute Key conforming to the
- // "k8s.resourcequota.uid" semantic conventions. It represents the UID of the
- // resource quota.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SResourceQuotaUIDKey = attribute.Key("k8s.resourcequota.uid")
-
- // K8SServiceEndpointAddressTypeKey is the attribute Key conforming to the
- // "k8s.service.endpoint.address_type" semantic conventions. It represents the
- // address type of the service endpoint.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "IPv4", "IPv6"
- // Note: The network address family or type of the endpoint.
- // This attribute aligns with the `addressType` field of the
- // [K8s EndpointSlice].
- // It is used to differentiate metrics when a Service is backed by multiple
- // address types
- // (e.g., in dual-stack clusters).
- //
- // [K8s EndpointSlice]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1/
- K8SServiceEndpointAddressTypeKey = attribute.Key("k8s.service.endpoint.address_type")
-
- // K8SServiceEndpointConditionKey is the attribute Key conforming to the
- // "k8s.service.endpoint.condition" semantic conventions. It represents the
- // condition of the service endpoint.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ready", "serving", "terminating"
- // Note: The current operational condition of the service endpoint.
- // An endpoint can have multiple conditions set at once (e.g., both `serving`
- // and `terminating` during rollout).
- // This attribute aligns with the condition fields in the [K8s EndpointSlice].
- //
- // [K8s EndpointSlice]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1/
- K8SServiceEndpointConditionKey = attribute.Key("k8s.service.endpoint.condition")
-
- // K8SServiceEndpointZoneKey is the attribute Key conforming to the
- // "k8s.service.endpoint.zone" semantic conventions. It represents the zone of
- // the service endpoint.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "us-east-1a", "us-west-2b", "zone-a", ""
- // Note: The zone where the endpoint is located, typically corresponding to a
- // failure domain.
- // This attribute aligns with the `zone` field of endpoints in the
- // [K8s EndpointSlice].
- // It enables zone-aware monitoring of service endpoint distribution and
- // supports
- // features like [Topology Aware Routing].
- //
- // If the zone is not populated (e.g., nodes without the
- // `topology.kubernetes.io/zone` label),
- // the attribute value will be an empty string.
- //
- // [K8s EndpointSlice]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/endpoint-slice-v1/
- // [Topology Aware Routing]: https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/
- K8SServiceEndpointZoneKey = attribute.Key("k8s.service.endpoint.zone")
-
- // K8SServiceNameKey is the attribute Key conforming to the "k8s.service.name"
- // semantic conventions. It represents the name of the Service.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-service"
- K8SServiceNameKey = attribute.Key("k8s.service.name")
-
- // K8SServicePublishNotReadyAddressesKey is the attribute Key conforming to the
- // "k8s.service.publish_not_ready_addresses" semantic conventions. It represents
- // the whether the Service publishes not-ready endpoints.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: true, false
- // Note: Whether the Service is configured to publish endpoints before the pods
- // are ready.
- // This attribute is typically used to indicate that a Service (such as a
- // headless
- // Service for a StatefulSet) allows peer discovery before pods pass their
- // readiness probes.
- // It aligns with the `publishNotReadyAddresses` field of the
- // [K8s ServiceSpec].
- //
- // [K8s ServiceSpec]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
- K8SServicePublishNotReadyAddressesKey = attribute.Key("k8s.service.publish_not_ready_addresses")
-
- // K8SServiceTrafficDistributionKey is the attribute Key conforming to the
- // "k8s.service.traffic_distribution" semantic conventions. It represents the
- // traffic distribution policy for the Service.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "PreferSameZone", "PreferSameNode"
- // Note: Specifies how traffic is distributed to endpoints for this Service.
- // This attribute aligns with the `trafficDistribution` field of the
- // [K8s ServiceSpec].
- // Known values include `PreferSameZone` (prefer endpoints in the same zone as
- // the client) and
- // `PreferSameNode` (prefer endpoints on the same node, fallback to same zone,
- // then cluster-wide).
- // If this field is not set on the Service, the attribute SHOULD NOT be emitted.
- // When not set, Kubernetes distributes traffic evenly across all endpoints
- // cluster-wide.
- //
- // [K8s ServiceSpec]: https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution
- K8SServiceTrafficDistributionKey = attribute.Key("k8s.service.traffic_distribution")
-
- // K8SServiceTypeKey is the attribute Key conforming to the "k8s.service.type"
- // semantic conventions. It represents the type of the Kubernetes Service.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ClusterIP", "NodePort", "LoadBalancer"
- // Note: This attribute aligns with the `type` field of the
- // [K8s ServiceSpec].
- //
- // [K8s ServiceSpec]: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
- K8SServiceTypeKey = attribute.Key("k8s.service.type")
-
- // K8SServiceUIDKey is the attribute Key conforming to the "k8s.service.uid"
- // semantic conventions. It represents the UID of the Service.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SServiceUIDKey = attribute.Key("k8s.service.uid")
-
- // K8SStatefulSetNameKey is the attribute Key conforming to the
- // "k8s.statefulset.name" semantic conventions. It represents the name of the
- // StatefulSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "opentelemetry"
- K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name")
-
- // K8SStatefulSetUIDKey is the attribute Key conforming to the
- // "k8s.statefulset.uid" semantic conventions. It represents the UID of the
- // StatefulSet.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid")
-
- // K8SStorageclassNameKey is the attribute Key conforming to the
- // "k8s.storageclass.name" semantic conventions. It represents the name of K8s
- // [StorageClass] object.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "gold.storageclass.storage.k8s.io"
- //
- // [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io
- K8SStorageclassNameKey = attribute.Key("k8s.storageclass.name")
-
- // K8SVolumeNameKey is the attribute Key conforming to the "k8s.volume.name"
- // semantic conventions. It represents the name of the K8s volume.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "volume0"
- K8SVolumeNameKey = attribute.Key("k8s.volume.name")
-
- // K8SVolumeTypeKey is the attribute Key conforming to the "k8s.volume.type"
- // semantic conventions. It represents the type of the K8s volume.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "emptyDir", "persistentVolumeClaim"
- K8SVolumeTypeKey = attribute.Key("k8s.volume.type")
-)
-
-// K8SClusterName returns an attribute KeyValue conforming to the
-// "k8s.cluster.name" semantic conventions. It represents the name of the
-// cluster.
-func K8SClusterName(val string) attribute.KeyValue {
- return K8SClusterNameKey.String(val)
-}
-
-// K8SClusterUID returns an attribute KeyValue conforming to the
-// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the
-// cluster, set to the UID of the `kube-system` namespace.
-func K8SClusterUID(val string) attribute.KeyValue {
- return K8SClusterUIDKey.String(val)
-}
-
-// K8SContainerName returns an attribute KeyValue conforming to the
-// "k8s.container.name" semantic conventions. It represents the name of the
-// Container from Pod specification, must be unique within a Pod. Container
-// runtime usually uses different globally unique name (`container.name`).
-func K8SContainerName(val string) attribute.KeyValue {
- return K8SContainerNameKey.String(val)
-}
-
-// K8SContainerRestartCount returns an attribute KeyValue conforming to the
-// "k8s.container.restart_count" semantic conventions. It represents the number
-// of times the container was restarted. This attribute can be used to identify a
-// particular container (running or stopped) within a container spec.
-func K8SContainerRestartCount(val int) attribute.KeyValue {
- return K8SContainerRestartCountKey.Int(val)
-}
-
-// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue
-// conforming to the "k8s.container.status.last_terminated_reason" semantic
-// conventions. It represents the last terminated reason of the Container.
-func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue {
- return K8SContainerStatusLastTerminatedReasonKey.String(val)
-}
-
-// K8SCronJobAnnotation returns an attribute KeyValue conforming to the
-// "k8s.cronjob.annotation" semantic conventions. It represents the cronjob
-// annotation placed on the CronJob, the `` being the annotation name, the
-// value being the annotation value.
-func K8SCronJobAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.cronjob.annotation."+key, val)
-}
-
-// K8SCronJobLabel returns an attribute KeyValue conforming to the
-// "k8s.cronjob.label" semantic conventions. It represents the label placed on
-// the CronJob, the `` being the label name, the value being the label
-// value.
-func K8SCronJobLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.cronjob.label."+key, val)
-}
-
-// K8SCronJobName returns an attribute KeyValue conforming to the
-// "k8s.cronjob.name" semantic conventions. It represents the name of the
-// CronJob.
-func K8SCronJobName(val string) attribute.KeyValue {
- return K8SCronJobNameKey.String(val)
-}
-
-// K8SCronJobUID returns an attribute KeyValue conforming to the
-// "k8s.cronjob.uid" semantic conventions. It represents the UID of the CronJob.
-func K8SCronJobUID(val string) attribute.KeyValue {
- return K8SCronJobUIDKey.String(val)
-}
-
-// K8SDaemonSetAnnotation returns an attribute KeyValue conforming to the
-// "k8s.daemonset.annotation" semantic conventions. It represents the annotation
-// placed on the DaemonSet, the `` being the annotation name, the value
-// being the annotation value, even if the value is empty.
-func K8SDaemonSetAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.daemonset.annotation."+key, val)
-}
-
-// K8SDaemonSetLabel returns an attribute KeyValue conforming to the
-// "k8s.daemonset.label" semantic conventions. It represents the label placed on
-// the DaemonSet, the `` being the label name, the value being the label
-// value, even if the value is empty.
-func K8SDaemonSetLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.daemonset.label."+key, val)
-}
-
-// K8SDaemonSetName returns an attribute KeyValue conforming to the
-// "k8s.daemonset.name" semantic conventions. It represents the name of the
-// DaemonSet.
-func K8SDaemonSetName(val string) attribute.KeyValue {
- return K8SDaemonSetNameKey.String(val)
-}
-
-// K8SDaemonSetUID returns an attribute KeyValue conforming to the
-// "k8s.daemonset.uid" semantic conventions. It represents the UID of the
-// DaemonSet.
-func K8SDaemonSetUID(val string) attribute.KeyValue {
- return K8SDaemonSetUIDKey.String(val)
-}
-
-// K8SDeploymentAnnotation returns an attribute KeyValue conforming to the
-// "k8s.deployment.annotation" semantic conventions. It represents the annotation
-// placed on the Deployment, the `` being the annotation name, the value
-// being the annotation value, even if the value is empty.
-func K8SDeploymentAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.deployment.annotation."+key, val)
-}
-
-// K8SDeploymentLabel returns an attribute KeyValue conforming to the
-// "k8s.deployment.label" semantic conventions. It represents the label placed on
-// the Deployment, the `` being the label name, the value being the label
-// value, even if the value is empty.
-func K8SDeploymentLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.deployment.label."+key, val)
-}
-
-// K8SDeploymentName returns an attribute KeyValue conforming to the
-// "k8s.deployment.name" semantic conventions. It represents the name of the
-// Deployment.
-func K8SDeploymentName(val string) attribute.KeyValue {
- return K8SDeploymentNameKey.String(val)
-}
-
-// K8SDeploymentUID returns an attribute KeyValue conforming to the
-// "k8s.deployment.uid" semantic conventions. It represents the UID of the
-// Deployment.
-func K8SDeploymentUID(val string) attribute.KeyValue {
- return K8SDeploymentUIDKey.String(val)
-}
-
-// K8SHPAMetricType returns an attribute KeyValue conforming to the
-// "k8s.hpa.metric.type" semantic conventions. It represents the type of metric
-// source for the horizontal pod autoscaler.
-func K8SHPAMetricType(val string) attribute.KeyValue {
- return K8SHPAMetricTypeKey.String(val)
-}
-
-// K8SHPAName returns an attribute KeyValue conforming to the "k8s.hpa.name"
-// semantic conventions. It represents the name of the horizontal pod autoscaler.
-func K8SHPAName(val string) attribute.KeyValue {
- return K8SHPANameKey.String(val)
-}
-
-// K8SHPAScaletargetrefAPIVersion returns an attribute KeyValue conforming to the
-// "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the
-// API version of the target resource to scale for the HorizontalPodAutoscaler.
-func K8SHPAScaletargetrefAPIVersion(val string) attribute.KeyValue {
- return K8SHPAScaletargetrefAPIVersionKey.String(val)
-}
-
-// K8SHPAScaletargetrefKind returns an attribute KeyValue conforming to the
-// "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of
-// the target resource to scale for the HorizontalPodAutoscaler.
-func K8SHPAScaletargetrefKind(val string) attribute.KeyValue {
- return K8SHPAScaletargetrefKindKey.String(val)
-}
-
-// K8SHPAScaletargetrefName returns an attribute KeyValue conforming to the
-// "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of
-// the target resource to scale for the HorizontalPodAutoscaler.
-func K8SHPAScaletargetrefName(val string) attribute.KeyValue {
- return K8SHPAScaletargetrefNameKey.String(val)
-}
-
-// K8SHPAUID returns an attribute KeyValue conforming to the "k8s.hpa.uid"
-// semantic conventions. It represents the UID of the horizontal pod autoscaler.
-func K8SHPAUID(val string) attribute.KeyValue {
- return K8SHPAUIDKey.String(val)
-}
-
-// K8SHugepageSize returns an attribute KeyValue conforming to the
-// "k8s.hugepage.size" semantic conventions. It represents the size (identifier)
-// of the K8s huge page.
-func K8SHugepageSize(val string) attribute.KeyValue {
- return K8SHugepageSizeKey.String(val)
-}
-
-// K8SJobAnnotation returns an attribute KeyValue conforming to the
-// "k8s.job.annotation" semantic conventions. It represents the annotation placed
-// on the Job, the `` being the annotation name, the value being the
-// annotation value, even if the value is empty.
-func K8SJobAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.job.annotation."+key, val)
-}
-
-// K8SJobLabel returns an attribute KeyValue conforming to the "k8s.job.label"
-// semantic conventions. It represents the label placed on the Job, the ``
-// being the label name, the value being the label value, even if the value is
-// empty.
-func K8SJobLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.job.label."+key, val)
-}
-
-// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name"
-// semantic conventions. It represents the name of the Job.
-func K8SJobName(val string) attribute.KeyValue {
- return K8SJobNameKey.String(val)
-}
-
-// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid"
-// semantic conventions. It represents the UID of the Job.
-func K8SJobUID(val string) attribute.KeyValue {
- return K8SJobUIDKey.String(val)
-}
-
-// K8SNamespaceAnnotation returns an attribute KeyValue conforming to the
-// "k8s.namespace.annotation" semantic conventions. It represents the annotation
-// placed on the Namespace, the `` being the annotation name, the value
-// being the annotation value, even if the value is empty.
-func K8SNamespaceAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.namespace.annotation."+key, val)
-}
-
-// K8SNamespaceLabel returns an attribute KeyValue conforming to the
-// "k8s.namespace.label" semantic conventions. It represents the label placed on
-// the Namespace, the `` being the label name, the value being the label
-// value, even if the value is empty.
-func K8SNamespaceLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.namespace.label."+key, val)
-}
-
-// K8SNamespaceName returns an attribute KeyValue conforming to the
-// "k8s.namespace.name" semantic conventions. It represents the name of the
-// namespace that the pod is running in.
-func K8SNamespaceName(val string) attribute.KeyValue {
- return K8SNamespaceNameKey.String(val)
-}
-
-// K8SNodeAnnotation returns an attribute KeyValue conforming to the
-// "k8s.node.annotation" semantic conventions. It represents the annotation
-// placed on the Node, the `` being the annotation name, the value being the
-// annotation value, even if the value is empty.
-func K8SNodeAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.node.annotation."+key, val)
-}
-
-// K8SNodeLabel returns an attribute KeyValue conforming to the "k8s.node.label"
-// semantic conventions. It represents the label placed on the Node, the ``
-// being the label name, the value being the label value, even if the value is
-// empty.
-func K8SNodeLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.node.label."+key, val)
-}
-
-// K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name"
-// semantic conventions. It represents the name of the Node.
-func K8SNodeName(val string) attribute.KeyValue {
- return K8SNodeNameKey.String(val)
-}
-
-// K8SNodeSystemContainerName returns an attribute KeyValue conforming to the
-// "k8s.node.system_container.name" semantic conventions. It represents the name
-// of the system container running on the K8s Node.
-func K8SNodeSystemContainerName(val string) attribute.KeyValue {
- return K8SNodeSystemContainerNameKey.String(val)
-}
-
-// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid"
-// semantic conventions. It represents the UID of the Node.
-func K8SNodeUID(val string) attribute.KeyValue {
- return K8SNodeUIDKey.String(val)
-}
-
-// K8SPersistentvolumeAnnotation returns an attribute KeyValue conforming to the
-// "k8s.persistentvolume.annotation" semantic conventions. It represents the
-// annotation placed on the PersistentVolume, the `` being the annotation
-// name, the value being the annotation value, even if the value is empty.
-func K8SPersistentvolumeAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.persistentvolume.annotation."+key, val)
-}
-
-// K8SPersistentvolumeLabel returns an attribute KeyValue conforming to the
-// "k8s.persistentvolume.label" semantic conventions. It represents the label
-// placed on the PersistentVolume, the `` being the label name, the value
-// being the label value, even if the value is empty.
-func K8SPersistentvolumeLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.persistentvolume.label."+key, val)
-}
-
-// K8SPersistentvolumeName returns an attribute KeyValue conforming to the
-// "k8s.persistentvolume.name" semantic conventions. It represents the name of
-// the PersistentVolume.
-func K8SPersistentvolumeName(val string) attribute.KeyValue {
- return K8SPersistentvolumeNameKey.String(val)
-}
-
-// K8SPersistentvolumeUID returns an attribute KeyValue conforming to the
-// "k8s.persistentvolume.uid" semantic conventions. It represents the UID of the
-// PersistentVolume.
-func K8SPersistentvolumeUID(val string) attribute.KeyValue {
- return K8SPersistentvolumeUIDKey.String(val)
-}
-
-// K8SPersistentvolumeclaimAnnotation returns an attribute KeyValue conforming to
-// the "k8s.persistentvolumeclaim.annotation" semantic conventions. It represents
-// the annotation placed on the PersistentVolumeClaim, the `` being the
-// annotation name, the value being the annotation value, even if the value is
-// empty.
-func K8SPersistentvolumeclaimAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.persistentvolumeclaim.annotation."+key, val)
-}
-
-// K8SPersistentvolumeclaimLabel returns an attribute KeyValue conforming to the
-// "k8s.persistentvolumeclaim.label" semantic conventions. It represents the
-// label placed on the PersistentVolumeClaim, the `` being the label name,
-// the value being the label value, even if the value is empty.
-func K8SPersistentvolumeclaimLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.persistentvolumeclaim.label."+key, val)
-}
-
-// K8SPersistentvolumeclaimName returns an attribute KeyValue conforming to the
-// "k8s.persistentvolumeclaim.name" semantic conventions. It represents the name
-// of the PersistentVolumeClaim.
-func K8SPersistentvolumeclaimName(val string) attribute.KeyValue {
- return K8SPersistentvolumeclaimNameKey.String(val)
-}
-
-// K8SPersistentvolumeclaimUID returns an attribute KeyValue conforming to the
-// "k8s.persistentvolumeclaim.uid" semantic conventions. It represents the UID of
-// the PersistentVolumeClaim.
-func K8SPersistentvolumeclaimUID(val string) attribute.KeyValue {
- return K8SPersistentvolumeclaimUIDKey.String(val)
-}
-
-// K8SPodAnnotation returns an attribute KeyValue conforming to the
-// "k8s.pod.annotation" semantic conventions. It represents the annotation placed
-// on the Pod, the `` being the annotation name, the value being the
-// annotation value.
-func K8SPodAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.pod.annotation."+key, val)
-}
-
-// K8SPodHostname returns an attribute KeyValue conforming to the
-// "k8s.pod.hostname" semantic conventions. It represents the specifies the
-// hostname of the Pod.
-func K8SPodHostname(val string) attribute.KeyValue {
- return K8SPodHostnameKey.String(val)
-}
-
-// K8SPodIP returns an attribute KeyValue conforming to the "k8s.pod.ip" semantic
-// conventions. It represents the IP address allocated to the Pod.
-func K8SPodIP(val string) attribute.KeyValue {
- return K8SPodIPKey.String(val)
-}
-
-// K8SPodLabel returns an attribute KeyValue conforming to the "k8s.pod.label"
-// semantic conventions. It represents the label placed on the Pod, the ``
-// being the label name, the value being the label value.
-func K8SPodLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.pod.label."+key, val)
-}
-
-// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name"
-// semantic conventions. It represents the name of the Pod.
-func K8SPodName(val string) attribute.KeyValue {
- return K8SPodNameKey.String(val)
-}
-
-// K8SPodStartTime returns an attribute KeyValue conforming to the
-// "k8s.pod.start_time" semantic conventions. It represents the start timestamp
-// of the Pod.
-func K8SPodStartTime(val string) attribute.KeyValue {
- return K8SPodStartTimeKey.String(val)
-}
-
-// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid"
-// semantic conventions. It represents the UID of the Pod.
-func K8SPodUID(val string) attribute.KeyValue {
- return K8SPodUIDKey.String(val)
-}
-
-// K8SReplicaSetAnnotation returns an attribute KeyValue conforming to the
-// "k8s.replicaset.annotation" semantic conventions. It represents the annotation
-// placed on the ReplicaSet, the `` being the annotation name, the value
-// being the annotation value, even if the value is empty.
-func K8SReplicaSetAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.replicaset.annotation."+key, val)
-}
-
-// K8SReplicaSetLabel returns an attribute KeyValue conforming to the
-// "k8s.replicaset.label" semantic conventions. It represents the label placed on
-// the ReplicaSet, the `` being the label name, the value being the label
-// value, even if the value is empty.
-func K8SReplicaSetLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.replicaset.label."+key, val)
-}
-
-// K8SReplicaSetName returns an attribute KeyValue conforming to the
-// "k8s.replicaset.name" semantic conventions. It represents the name of the
-// ReplicaSet.
-func K8SReplicaSetName(val string) attribute.KeyValue {
- return K8SReplicaSetNameKey.String(val)
-}
-
-// K8SReplicaSetUID returns an attribute KeyValue conforming to the
-// "k8s.replicaset.uid" semantic conventions. It represents the UID of the
-// ReplicaSet.
-func K8SReplicaSetUID(val string) attribute.KeyValue {
- return K8SReplicaSetUIDKey.String(val)
-}
-
-// K8SReplicationControllerName returns an attribute KeyValue conforming to the
-// "k8s.replicationcontroller.name" semantic conventions. It represents the name
-// of the replication controller.
-func K8SReplicationControllerName(val string) attribute.KeyValue {
- return K8SReplicationControllerNameKey.String(val)
-}
-
-// K8SReplicationControllerUID returns an attribute KeyValue conforming to the
-// "k8s.replicationcontroller.uid" semantic conventions. It represents the UID of
-// the replication controller.
-func K8SReplicationControllerUID(val string) attribute.KeyValue {
- return K8SReplicationControllerUIDKey.String(val)
-}
-
-// K8SResourceQuotaName returns an attribute KeyValue conforming to the
-// "k8s.resourcequota.name" semantic conventions. It represents the name of the
-// resource quota.
-func K8SResourceQuotaName(val string) attribute.KeyValue {
- return K8SResourceQuotaNameKey.String(val)
-}
-
-// K8SResourceQuotaResourceName returns an attribute KeyValue conforming to the
-// "k8s.resourcequota.resource_name" semantic conventions. It represents the name
-// of the K8s resource a resource quota defines.
-func K8SResourceQuotaResourceName(val string) attribute.KeyValue {
- return K8SResourceQuotaResourceNameKey.String(val)
-}
-
-// K8SResourceQuotaUID returns an attribute KeyValue conforming to the
-// "k8s.resourcequota.uid" semantic conventions. It represents the UID of the
-// resource quota.
-func K8SResourceQuotaUID(val string) attribute.KeyValue {
- return K8SResourceQuotaUIDKey.String(val)
-}
-
-// K8SServiceAnnotation returns an attribute KeyValue conforming to the
-// "k8s.service.annotation" semantic conventions. It represents the annotation
-// placed on the Service, the `` being the annotation name, the value being
-// the annotation value, even if the value is empty.
-func K8SServiceAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.service.annotation."+key, val)
-}
-
-// K8SServiceEndpointZone returns an attribute KeyValue conforming to the
-// "k8s.service.endpoint.zone" semantic conventions. It represents the zone of
-// the service endpoint.
-func K8SServiceEndpointZone(val string) attribute.KeyValue {
- return K8SServiceEndpointZoneKey.String(val)
-}
-
-// K8SServiceLabel returns an attribute KeyValue conforming to the
-// "k8s.service.label" semantic conventions. It represents the label placed on
-// the Service, the `` being the label name, the value being the label
-// value, even if the value is empty.
-func K8SServiceLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.service.label."+key, val)
-}
-
-// K8SServiceName returns an attribute KeyValue conforming to the
-// "k8s.service.name" semantic conventions. It represents the name of the
-// Service.
-func K8SServiceName(val string) attribute.KeyValue {
- return K8SServiceNameKey.String(val)
-}
-
-// K8SServicePublishNotReadyAddresses returns an attribute KeyValue conforming to
-// the "k8s.service.publish_not_ready_addresses" semantic conventions. It
-// represents the whether the Service publishes not-ready endpoints.
-func K8SServicePublishNotReadyAddresses(val bool) attribute.KeyValue {
- return K8SServicePublishNotReadyAddressesKey.Bool(val)
-}
-
-// K8SServiceSelector returns an attribute KeyValue conforming to the
-// "k8s.service.selector" semantic conventions. It represents the selector
-// key-value pair placed on the Service, the `` being the selector key, the
-// value being the selector value.
-func K8SServiceSelector(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.service.selector."+key, val)
-}
-
-// K8SServiceTrafficDistribution returns an attribute KeyValue conforming to the
-// "k8s.service.traffic_distribution" semantic conventions. It represents the
-// traffic distribution policy for the Service.
-func K8SServiceTrafficDistribution(val string) attribute.KeyValue {
- return K8SServiceTrafficDistributionKey.String(val)
-}
-
-// K8SServiceUID returns an attribute KeyValue conforming to the
-// "k8s.service.uid" semantic conventions. It represents the UID of the Service.
-func K8SServiceUID(val string) attribute.KeyValue {
- return K8SServiceUIDKey.String(val)
-}
-
-// K8SStatefulSetAnnotation returns an attribute KeyValue conforming to the
-// "k8s.statefulset.annotation" semantic conventions. It represents the
-// annotation placed on the StatefulSet, the `` being the annotation name,
-// the value being the annotation value, even if the value is empty.
-func K8SStatefulSetAnnotation(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.statefulset.annotation."+key, val)
-}
-
-// K8SStatefulSetLabel returns an attribute KeyValue conforming to the
-// "k8s.statefulset.label" semantic conventions. It represents the label placed
-// on the StatefulSet, the `` being the label name, the value being the
-// label value, even if the value is empty.
-func K8SStatefulSetLabel(key string, val string) attribute.KeyValue {
- return attribute.String("k8s.statefulset.label."+key, val)
-}
-
-// K8SStatefulSetName returns an attribute KeyValue conforming to the
-// "k8s.statefulset.name" semantic conventions. It represents the name of the
-// StatefulSet.
-func K8SStatefulSetName(val string) attribute.KeyValue {
- return K8SStatefulSetNameKey.String(val)
-}
-
-// K8SStatefulSetUID returns an attribute KeyValue conforming to the
-// "k8s.statefulset.uid" semantic conventions. It represents the UID of the
-// StatefulSet.
-func K8SStatefulSetUID(val string) attribute.KeyValue {
- return K8SStatefulSetUIDKey.String(val)
-}
-
-// K8SStorageclassName returns an attribute KeyValue conforming to the
-// "k8s.storageclass.name" semantic conventions. It represents the name of K8s
-// [StorageClass] object.
-//
-// [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io
-func K8SStorageclassName(val string) attribute.KeyValue {
- return K8SStorageclassNameKey.String(val)
-}
-
-// K8SVolumeName returns an attribute KeyValue conforming to the
-// "k8s.volume.name" semantic conventions. It represents the name of the K8s
-// volume.
-func K8SVolumeName(val string) attribute.KeyValue {
- return K8SVolumeNameKey.String(val)
-}
-
-// Enum values for k8s.container.status.reason
-var (
- // The container is being created.
- // Stability: development
- K8SContainerStatusReasonContainerCreating = K8SContainerStatusReasonKey.String("ContainerCreating")
- // The container is in a crash loop back off state.
- // Stability: development
- K8SContainerStatusReasonCrashLoopBackOff = K8SContainerStatusReasonKey.String("CrashLoopBackOff")
- // There was an error creating the container configuration.
- // Stability: development
- K8SContainerStatusReasonCreateContainerConfigError = K8SContainerStatusReasonKey.String("CreateContainerConfigError")
- // There was an error pulling the container image.
- // Stability: development
- K8SContainerStatusReasonErrImagePull = K8SContainerStatusReasonKey.String("ErrImagePull")
- // The container image pull is in back off state.
- // Stability: development
- K8SContainerStatusReasonImagePullBackOff = K8SContainerStatusReasonKey.String("ImagePullBackOff")
- // The container was killed due to out of memory.
- // Stability: development
- K8SContainerStatusReasonOomKilled = K8SContainerStatusReasonKey.String("OOMKilled")
- // The container has completed execution.
- // Stability: development
- K8SContainerStatusReasonCompleted = K8SContainerStatusReasonKey.String("Completed")
- // There was an error with the container.
- // Stability: development
- K8SContainerStatusReasonError = K8SContainerStatusReasonKey.String("Error")
- // The container cannot run.
- // Stability: development
- K8SContainerStatusReasonContainerCannotRun = K8SContainerStatusReasonKey.String("ContainerCannotRun")
-)
-
-// Enum values for k8s.container.status.state
-var (
- // The container has terminated.
- // Stability: development
- K8SContainerStatusStateTerminated = K8SContainerStatusStateKey.String("terminated")
- // The container is running.
- // Stability: development
- K8SContainerStatusStateRunning = K8SContainerStatusStateKey.String("running")
- // The container is waiting.
- // Stability: development
- K8SContainerStatusStateWaiting = K8SContainerStatusStateKey.String("waiting")
-)
-
-// Enum values for k8s.namespace.phase
-var (
- // Active namespace phase as described by [K8s API]
- // Stability: development
- //
- // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase
- K8SNamespacePhaseActive = K8SNamespacePhaseKey.String("active")
- // Terminating namespace phase as described by [K8s API]
- // Stability: development
- //
- // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase
- K8SNamespacePhaseTerminating = K8SNamespacePhaseKey.String("terminating")
-)
-
-// Enum values for k8s.node.condition.status
-var (
- // condition_true
- // Stability: development
- K8SNodeConditionStatusConditionTrue = K8SNodeConditionStatusKey.String("true")
- // condition_false
- // Stability: development
- K8SNodeConditionStatusConditionFalse = K8SNodeConditionStatusKey.String("false")
- // condition_unknown
- // Stability: development
- K8SNodeConditionStatusConditionUnknown = K8SNodeConditionStatusKey.String("unknown")
-)
-
-// Enum values for k8s.node.condition.type
-var (
- // The node is healthy and ready to accept pods
- // Stability: development
- K8SNodeConditionTypeReady = K8SNodeConditionTypeKey.String("Ready")
- // Pressure exists on the disk sizeβthat is, if the disk capacity is low
- // Stability: development
- K8SNodeConditionTypeDiskPressure = K8SNodeConditionTypeKey.String("DiskPressure")
- // Pressure exists on the node memoryβthat is, if the node memory is low
- // Stability: development
- K8SNodeConditionTypeMemoryPressure = K8SNodeConditionTypeKey.String("MemoryPressure")
- // Pressure exists on the processesβthat is, if there are too many processes
- // on the node
- // Stability: development
- K8SNodeConditionTypePIDPressure = K8SNodeConditionTypeKey.String("PIDPressure")
- // The network for the node is not correctly configured
- // Stability: development
- K8SNodeConditionTypeNetworkUnavailable = K8SNodeConditionTypeKey.String("NetworkUnavailable")
-)
-
-// Enum values for k8s.persistentvolume.reclaim_policy
-var (
- // The volume will be deleted when released from its claim.
- // Stability: development
- K8SPersistentvolumeReclaimPolicyDelete = K8SPersistentvolumeReclaimPolicyKey.String("Delete")
- // The volume will be recycled (basic scrub) when released from its claim.
- // Stability: development
- K8SPersistentvolumeReclaimPolicyRecycle = K8SPersistentvolumeReclaimPolicyKey.String("Recycle")
- // The volume will be retained when released from its claim.
- // Stability: development
- K8SPersistentvolumeReclaimPolicyRetain = K8SPersistentvolumeReclaimPolicyKey.String("Retain")
-)
-
-// Enum values for k8s.persistentvolume.status.phase
-var (
- // The volume is available and not yet bound to a claim.
- // Stability: development
- K8SPersistentvolumeStatusPhaseAvailable = K8SPersistentvolumeStatusPhaseKey.String("Available")
- // The volume is bound to a claim.
- // Stability: development
- K8SPersistentvolumeStatusPhaseBound = K8SPersistentvolumeStatusPhaseKey.String("Bound")
- // The volume has failed its automatic reclamation.
- // Stability: development
- K8SPersistentvolumeStatusPhaseFailed = K8SPersistentvolumeStatusPhaseKey.String("Failed")
- // The volume is being provisioned.
- // Stability: development
- K8SPersistentvolumeStatusPhasePending = K8SPersistentvolumeStatusPhaseKey.String("Pending")
- // The claim has been deleted but the volume is not yet available.
- // Stability: development
- K8SPersistentvolumeStatusPhaseReleased = K8SPersistentvolumeStatusPhaseKey.String("Released")
-)
-
-// Enum values for k8s.persistentvolumeclaim.status.phase
-var (
- // The claim is bound to a volume.
- // Stability: development
- K8SPersistentvolumeclaimStatusPhaseBound = K8SPersistentvolumeclaimStatusPhaseKey.String("Bound")
- // The claim has lost its underlying volume (the volume does not exist anymore).
- // Stability: development
- K8SPersistentvolumeclaimStatusPhaseLost = K8SPersistentvolumeclaimStatusPhaseKey.String("Lost")
- // The claim has not yet been bound to a volume.
- // Stability: development
- K8SPersistentvolumeclaimStatusPhasePending = K8SPersistentvolumeclaimStatusPhaseKey.String("Pending")
-)
-
-// Enum values for k8s.pod.status.phase
-var (
- // The pod has been accepted by the system, but one or more of the containers
- // has not been started. This includes time before being bound to a node, as
- // well as time spent pulling images onto the host.
- //
- // Stability: development
- K8SPodStatusPhasePending = K8SPodStatusPhaseKey.String("Pending")
- // The pod has been bound to a node and all of the containers have been started.
- // At least one container is still running or is in the process of being
- // restarted.
- //
- // Stability: development
- K8SPodStatusPhaseRunning = K8SPodStatusPhaseKey.String("Running")
- // All containers in the pod have voluntarily terminated with a container exit
- // code of 0, and the system is not going to restart any of these containers.
- //
- // Stability: development
- K8SPodStatusPhaseSucceeded = K8SPodStatusPhaseKey.String("Succeeded")
- // All containers in the pod have terminated, and at least one container has
- // terminated in a failure (exited with a non-zero exit code or was stopped by
- // the system).
- //
- // Stability: development
- K8SPodStatusPhaseFailed = K8SPodStatusPhaseKey.String("Failed")
- // For some reason the state of the pod could not be obtained, typically due to
- // an error in communicating with the host of the pod.
- //
- // Stability: development
- K8SPodStatusPhaseUnknown = K8SPodStatusPhaseKey.String("Unknown")
-)
-
-// Enum values for k8s.pod.status.reason
-var (
- // The pod is evicted.
- // Stability: development
- K8SPodStatusReasonEvicted = K8SPodStatusReasonKey.String("Evicted")
- // The pod is in a status because of its node affinity
- // Stability: development
- K8SPodStatusReasonNodeAffinity = K8SPodStatusReasonKey.String("NodeAffinity")
- // The reason on a pod when its state cannot be confirmed as kubelet is
- // unresponsive on the node it is (was) running.
- //
- // Stability: development
- K8SPodStatusReasonNodeLost = K8SPodStatusReasonKey.String("NodeLost")
- // The node is shutdown
- // Stability: development
- K8SPodStatusReasonShutdown = K8SPodStatusReasonKey.String("Shutdown")
- // The pod was rejected admission to the node because of an error during
- // admission that could not be categorized.
- //
- // Stability: development
- K8SPodStatusReasonUnexpectedAdmissionError = K8SPodStatusReasonKey.String("UnexpectedAdmissionError")
-)
-
-// Enum values for k8s.service.endpoint.address_type
-var (
- // IPv4 address type
- // Stability: development
- K8SServiceEndpointAddressTypeIPv4 = K8SServiceEndpointAddressTypeKey.String("IPv4")
- // IPv6 address type
- // Stability: development
- K8SServiceEndpointAddressTypeIPv6 = K8SServiceEndpointAddressTypeKey.String("IPv6")
- // FQDN address type
- // Stability: development
- K8SServiceEndpointAddressTypeFqdn = K8SServiceEndpointAddressTypeKey.String("FQDN")
-)
-
-// Enum values for k8s.service.endpoint.condition
-var (
- // The endpoint is ready to receive new connections.
- // Stability: development
- K8SServiceEndpointConditionReady = K8SServiceEndpointConditionKey.String("ready")
- // The endpoint is currently handling traffic.
- // Stability: development
- K8SServiceEndpointConditionServing = K8SServiceEndpointConditionKey.String("serving")
- // The endpoint is in the process of shutting down.
- // Stability: development
- K8SServiceEndpointConditionTerminating = K8SServiceEndpointConditionKey.String("terminating")
-)
-
-// Enum values for k8s.service.type
-var (
- // ClusterIP service type
- // Stability: development
- K8SServiceTypeClusterIP = K8SServiceTypeKey.String("ClusterIP")
- // NodePort service type
- // Stability: development
- K8SServiceTypeNodePort = K8SServiceTypeKey.String("NodePort")
- // LoadBalancer service type
- // Stability: development
- K8SServiceTypeLoadBalancer = K8SServiceTypeKey.String("LoadBalancer")
- // ExternalName service type
- // Stability: development
- K8SServiceTypeExternalName = K8SServiceTypeKey.String("ExternalName")
-)
-
-// Enum values for k8s.volume.type
-var (
- // A [persistentVolumeClaim] volume
- // Stability: development
- //
- // [persistentVolumeClaim]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim
- K8SVolumeTypePersistentVolumeClaim = K8SVolumeTypeKey.String("persistentVolumeClaim")
- // A [configMap] volume
- // Stability: development
- //
- // [configMap]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap
- K8SVolumeTypeConfigMap = K8SVolumeTypeKey.String("configMap")
- // A [downwardAPI] volume
- // Stability: development
- //
- // [downwardAPI]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi
- K8SVolumeTypeDownwardAPI = K8SVolumeTypeKey.String("downwardAPI")
- // An [emptyDir] volume
- // Stability: development
- //
- // [emptyDir]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir
- K8SVolumeTypeEmptyDir = K8SVolumeTypeKey.String("emptyDir")
- // A [secret] volume
- // Stability: development
- //
- // [secret]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret
- K8SVolumeTypeSecret = K8SVolumeTypeKey.String("secret")
- // A [local] volume
- // Stability: development
- //
- // [local]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local
- K8SVolumeTypeLocal = K8SVolumeTypeKey.String("local")
-)
-
-// Namespace: log
-const (
- // LogFileNameKey is the attribute Key conforming to the "log.file.name"
- // semantic conventions. It represents the basename of the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "audit.log"
- LogFileNameKey = attribute.Key("log.file.name")
-
- // LogFileNameResolvedKey is the attribute Key conforming to the
- // "log.file.name_resolved" semantic conventions. It represents the basename of
- // the file, with symlinks resolved.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "uuid.log"
- LogFileNameResolvedKey = attribute.Key("log.file.name_resolved")
-
- // LogFilePathKey is the attribute Key conforming to the "log.file.path"
- // semantic conventions. It represents the full path to the file.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/var/log/mysql/audit.log"
- LogFilePathKey = attribute.Key("log.file.path")
-
- // LogFilePathResolvedKey is the attribute Key conforming to the
- // "log.file.path_resolved" semantic conventions. It represents the full path to
- // the file, with symlinks resolved.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/var/lib/docker/uuid.log"
- LogFilePathResolvedKey = attribute.Key("log.file.path_resolved")
-
- // LogIostreamKey is the attribute Key conforming to the "log.iostream" semantic
- // conventions. It represents the stream associated with the log. See below for
- // a list of well-known values.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- LogIostreamKey = attribute.Key("log.iostream")
-
- // LogRecordOriginalKey is the attribute Key conforming to the
- // "log.record.original" semantic conventions. It represents the complete
- // original Log Record.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - -
- // Something happened", "[INFO] 8/3/24 12:34:56 Something happened"
- // Note: This value MAY be added when processing a Log Record which was
- // originally transmitted as a string or equivalent data type AND the Body field
- // of the Log Record does not contain the same value. (e.g. a syslog or a log
- // record read from a file.)
- LogRecordOriginalKey = attribute.Key("log.record.original")
-
- // LogRecordUIDKey is the attribute Key conforming to the "log.record.uid"
- // semantic conventions. It represents a unique identifier for the Log Record.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "01ARZ3NDEKTSV4RRFFQ69G5FAV"
- // Note: If an id is provided, other log records with the same id will be
- // considered duplicates and can be removed safely. This means, that two
- // distinguishable log records MUST have different values.
- // The id MAY be an
- // [Universally Unique Lexicographically Sortable Identifier (ULID)], but other
- // identifiers (e.g. UUID) may be used as needed.
- //
- // [Universally Unique Lexicographically Sortable Identifier (ULID)]: https://github.com/ulid/spec
- LogRecordUIDKey = attribute.Key("log.record.uid")
-)
-
-// LogFileName returns an attribute KeyValue conforming to the "log.file.name"
-// semantic conventions. It represents the basename of the file.
-func LogFileName(val string) attribute.KeyValue {
- return LogFileNameKey.String(val)
-}
-
-// LogFileNameResolved returns an attribute KeyValue conforming to the
-// "log.file.name_resolved" semantic conventions. It represents the basename of
-// the file, with symlinks resolved.
-func LogFileNameResolved(val string) attribute.KeyValue {
- return LogFileNameResolvedKey.String(val)
-}
-
-// LogFilePath returns an attribute KeyValue conforming to the "log.file.path"
-// semantic conventions. It represents the full path to the file.
-func LogFilePath(val string) attribute.KeyValue {
- return LogFilePathKey.String(val)
-}
-
-// LogFilePathResolved returns an attribute KeyValue conforming to the
-// "log.file.path_resolved" semantic conventions. It represents the full path to
-// the file, with symlinks resolved.
-func LogFilePathResolved(val string) attribute.KeyValue {
- return LogFilePathResolvedKey.String(val)
-}
-
-// LogRecordOriginal returns an attribute KeyValue conforming to the
-// "log.record.original" semantic conventions. It represents the complete
-// original Log Record.
-func LogRecordOriginal(val string) attribute.KeyValue {
- return LogRecordOriginalKey.String(val)
-}
-
-// LogRecordUID returns an attribute KeyValue conforming to the "log.record.uid"
-// semantic conventions. It represents a unique identifier for the Log Record.
-func LogRecordUID(val string) attribute.KeyValue {
- return LogRecordUIDKey.String(val)
-}
-
-// Enum values for log.iostream
-var (
- // Logs from stdout stream
- // Stability: development
- LogIostreamStdout = LogIostreamKey.String("stdout")
- // Events from stderr stream
- // Stability: development
- LogIostreamStderr = LogIostreamKey.String("stderr")
-)
-
-// Namespace: mainframe
-const (
- // MainframeLparNameKey is the attribute Key conforming to the
- // "mainframe.lpar.name" semantic conventions. It represents the name of the
- // logical partition that hosts a systems with a mainframe operating system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "LPAR01"
- MainframeLparNameKey = attribute.Key("mainframe.lpar.name")
-)
-
-// MainframeLparName returns an attribute KeyValue conforming to the
-// "mainframe.lpar.name" semantic conventions. It represents the name of the
-// logical partition that hosts a systems with a mainframe operating system.
-func MainframeLparName(val string) attribute.KeyValue {
- return MainframeLparNameKey.String(val)
-}
-
-// Namespace: mcp
-const (
- // McpMethodNameKey is the attribute Key conforming to the "mcp.method.name"
- // semantic conventions. It represents the name of the request or notification
- // method.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- McpMethodNameKey = attribute.Key("mcp.method.name")
-
- // McpProtocolVersionKey is the attribute Key conforming to the
- // "mcp.protocol.version" semantic conventions. It represents the [version] of
- // the Model Context Protocol used.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2025-06-18"
- //
- // [version]: https://modelcontextprotocol.io/specification/versioning
- McpProtocolVersionKey = attribute.Key("mcp.protocol.version")
-
- // McpResourceURIKey is the attribute Key conforming to the "mcp.resource.uri"
- // semantic conventions. It represents the value of the resource uri.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "postgres://database/customers/schema",
- // "file:///home/user/documents/report.pdf"
- // Note: This is a URI of the resource provided in the following requests or
- // notifications: `resources/read`, `resources/subscribe`,
- // `resources/unsubscribe`, or `notifications/resources/updated`.
- McpResourceURIKey = attribute.Key("mcp.resource.uri")
-
- // McpSessionIDKey is the attribute Key conforming to the "mcp.session.id"
- // semantic conventions. It represents the identifies [MCP session].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "191c4850af6c49e08843a3f6c80e5046"
- //
- // [MCP session]: https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management
- McpSessionIDKey = attribute.Key("mcp.session.id")
-)
-
-// McpProtocolVersion returns an attribute KeyValue conforming to the
-// "mcp.protocol.version" semantic conventions. It represents the [version] of
-// the Model Context Protocol used.
-//
-// [version]: https://modelcontextprotocol.io/specification/versioning
-func McpProtocolVersion(val string) attribute.KeyValue {
- return McpProtocolVersionKey.String(val)
-}
-
-// McpResourceURI returns an attribute KeyValue conforming to the
-// "mcp.resource.uri" semantic conventions. It represents the value of the
-// resource uri.
-func McpResourceURI(val string) attribute.KeyValue {
- return McpResourceURIKey.String(val)
-}
-
-// McpSessionID returns an attribute KeyValue conforming to the "mcp.session.id"
-// semantic conventions. It represents the identifies [MCP session].
-//
-// [MCP session]: https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management
-func McpSessionID(val string) attribute.KeyValue {
- return McpSessionIDKey.String(val)
-}
-
-// Enum values for mcp.method.name
-var (
- // Notification cancelling a previously-issued request.
- //
- // Stability: development
- McpMethodNameNotificationsCancelled = McpMethodNameKey.String("notifications/cancelled")
- // Request to initialize the MCP client.
- //
- // Stability: development
- McpMethodNameInitialize = McpMethodNameKey.String("initialize")
- // Notification indicating that the MCP client has been initialized.
- //
- // Stability: development
- McpMethodNameNotificationsInitialized = McpMethodNameKey.String("notifications/initialized")
- // Notification indicating the progress for a long-running operation.
- //
- // Stability: development
- McpMethodNameNotificationsProgress = McpMethodNameKey.String("notifications/progress")
- // Request to check that the other party is still alive.
- //
- // Stability: development
- McpMethodNamePing = McpMethodNameKey.String("ping")
- // Request to list resources available on server.
- //
- // Stability: development
- McpMethodNameResourcesList = McpMethodNameKey.String("resources/list")
- // Request to list resource templates available on server.
- //
- // Stability: development
- McpMethodNameResourcesTemplatesList = McpMethodNameKey.String("resources/templates/list")
- // Request to read a resource.
- //
- // Stability: development
- McpMethodNameResourcesRead = McpMethodNameKey.String("resources/read")
- // Notification indicating that the list of resources has changed.
- //
- // Stability: development
- McpMethodNameNotificationsResourcesListChanged = McpMethodNameKey.String("notifications/resources/list_changed")
- // Request to subscribe to a resource.
- //
- // Stability: development
- McpMethodNameResourcesSubscribe = McpMethodNameKey.String("resources/subscribe")
- // Request to unsubscribe from resource updates.
- //
- // Stability: development
- McpMethodNameResourcesUnsubscribe = McpMethodNameKey.String("resources/unsubscribe")
- // Notification indicating that a resource has been updated.
- //
- // Stability: development
- McpMethodNameNotificationsResourcesUpdated = McpMethodNameKey.String("notifications/resources/updated")
- // Request to list prompts available on server.
- //
- // Stability: development
- McpMethodNamePromptsList = McpMethodNameKey.String("prompts/list")
- // Request to get a prompt.
- //
- // Stability: development
- McpMethodNamePromptsGet = McpMethodNameKey.String("prompts/get")
- // Notification indicating that the list of prompts has changed.
- //
- // Stability: development
- McpMethodNameNotificationsPromptsListChanged = McpMethodNameKey.String("notifications/prompts/list_changed")
- // Request to list tools available on server.
- //
- // Stability: development
- McpMethodNameToolsList = McpMethodNameKey.String("tools/list")
- // Request to call a tool.
- //
- // Stability: development
- McpMethodNameToolsCall = McpMethodNameKey.String("tools/call")
- // Notification indicating that the list of tools has changed.
- //
- // Stability: development
- McpMethodNameNotificationsToolsListChanged = McpMethodNameKey.String("notifications/tools/list_changed")
- // Request to set the logging level.
- //
- // Stability: development
- McpMethodNameLoggingSetLevel = McpMethodNameKey.String("logging/setLevel")
- // Notification indicating that a message has been received.
- //
- // Stability: development
- McpMethodNameNotificationsMessage = McpMethodNameKey.String("notifications/message")
- // Request to create a sampling message.
- //
- // Stability: development
- McpMethodNameSamplingCreateMessage = McpMethodNameKey.String("sampling/createMessage")
- // Request to complete a prompt.
- //
- // Stability: development
- McpMethodNameCompletionComplete = McpMethodNameKey.String("completion/complete")
- // Request to list roots available on server.
- //
- // Stability: development
- McpMethodNameRootsList = McpMethodNameKey.String("roots/list")
- // Notification indicating that the list of roots has changed.
- //
- // Stability: development
- McpMethodNameNotificationsRootsListChanged = McpMethodNameKey.String("notifications/roots/list_changed")
- // Request from the server to elicit additional information from the user via
- // the client
- //
- // Stability: development
- McpMethodNameElicitationCreate = McpMethodNameKey.String("elicitation/create")
-)
-
-// Namespace: messaging
-const (
- // MessagingBatchMessageCountKey is the attribute Key conforming to the
- // "messaging.batch.message_count" semantic conventions. It represents the
- // number of messages sent, received, or processed in the scope of the batching
- // operation.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 0, 1, 2
- // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on
- // spans that operate with a single message. When a messaging client library
- // supports both batch and single-message API for the same operation,
- // instrumentations SHOULD use `messaging.batch.message_count` for batching APIs
- // and SHOULD NOT use it for single-message APIs.
- MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count")
-
- // MessagingClientIDKey is the attribute Key conforming to the
- // "messaging.client.id" semantic conventions. It represents a unique identifier
- // for the client that consumes or produces a message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "client-5", "myhost@8742@s8083jm"
- MessagingClientIDKey = attribute.Key("messaging.client.id")
-
- // MessagingConsumerGroupNameKey is the attribute Key conforming to the
- // "messaging.consumer.group.name" semantic conventions. It represents the name
- // of the consumer group with which a consumer is associated.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-group", "indexer"
- // Note: Semantic conventions for individual messaging systems SHOULD document
- // whether `messaging.consumer.group.name` is applicable and what it means in
- // the context of that system.
- MessagingConsumerGroupNameKey = attribute.Key("messaging.consumer.group.name")
-
- // MessagingDestinationAnonymousKey is the attribute Key conforming to the
- // "messaging.destination.anonymous" semantic conventions. It represents a
- // boolean that is true if the message destination is anonymous (could be
- // unnamed or have auto-generated name).
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous")
-
- // MessagingDestinationNameKey is the attribute Key conforming to the
- // "messaging.destination.name" semantic conventions. It represents the message
- // destination name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MyQueue", "MyTopic"
- // Note: Destination name SHOULD uniquely identify a specific queue, topic or
- // other entity within the broker. If
- // the broker doesn't have such notion, the destination name SHOULD uniquely
- // identify the broker.
- MessagingDestinationNameKey = attribute.Key("messaging.destination.name")
-
- // MessagingDestinationPartitionIDKey is the attribute Key conforming to the
- // "messaging.destination.partition.id" semantic conventions. It represents the
- // identifier of the partition messages are sent to or received from, unique
- // within the `messaging.destination.name`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1
- MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id")
-
- // MessagingDestinationSubscriptionNameKey is the attribute Key conforming to
- // the "messaging.destination.subscription.name" semantic conventions. It
- // represents the name of the destination subscription from which a message is
- // consumed.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "subscription-a"
- // Note: Semantic conventions for individual messaging systems SHOULD document
- // whether `messaging.destination.subscription.name` is applicable and what it
- // means in the context of that system.
- MessagingDestinationSubscriptionNameKey = attribute.Key("messaging.destination.subscription.name")
-
- // MessagingDestinationTemplateKey is the attribute Key conforming to the
- // "messaging.destination.template" semantic conventions. It represents the low
- // cardinality representation of the messaging destination name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/customers/{customerId}"
- // Note: Destination names could be constructed from templates. An example would
- // be a destination name involving a user name or product id. Although the
- // destination name in this case is of high cardinality, the underlying template
- // is of low cardinality and can be effectively used for grouping and
- // aggregation.
- MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template")
-
- // MessagingDestinationTemporaryKey is the attribute Key conforming to the
- // "messaging.destination.temporary" semantic conventions. It represents a
- // boolean that is true if the message destination is temporary and might not
- // exist anymore after messages are processed.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary")
-
- // MessagingEventHubsMessageEnqueuedTimeKey is the attribute Key conforming to
- // the "messaging.eventhubs.message.enqueued_time" semantic conventions. It
- // represents the UTC epoch seconds at which the message has been accepted and
- // stored in the entity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingEventHubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time")
-
- // MessagingGCPPubSubMessageAckDeadlineKey is the attribute Key conforming to
- // the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It
- // represents the ack deadline in seconds set for the modify ack deadline
- // request.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingGCPPubSubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline")
-
- // MessagingGCPPubSubMessageAckIDKey is the attribute Key conforming to the
- // "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the
- // ack id for a given message.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: ack_id
- MessagingGCPPubSubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id")
-
- // MessagingGCPPubSubMessageDeliveryAttemptKey is the attribute Key conforming
- // to the "messaging.gcp_pubsub.message.delivery_attempt" semantic conventions.
- // It represents the delivery attempt for a given message.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingGCPPubSubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt")
-
- // MessagingGCPPubSubMessageOrderingKeyKey is the attribute Key conforming to
- // the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It
- // represents the ordering key for a given message. If the attribute is not
- // present, the message does not have an ordering key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: ordering_key
- MessagingGCPPubSubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key")
-
- // MessagingKafkaMessageKeyKey is the attribute Key conforming to the
- // "messaging.kafka.message.key" semantic conventions. It represents the message
- // keys in Kafka are used for grouping alike messages to ensure they're
- // processed on the same partition. They differ from `messaging.message.id` in
- // that they're not unique. If the key is `null`, the attribute MUST NOT be set.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myKey
- // Note: If the key type is not string, it's string representation has to be
- // supplied for the attribute. If the key has no unambiguous, canonical string
- // form, don't include its value.
- MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key")
-
- // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the
- // "messaging.kafka.message.tombstone" semantic conventions. It represents a
- // boolean that is true if the message is a tombstone.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone")
-
- // MessagingKafkaOffsetKey is the attribute Key conforming to the
- // "messaging.kafka.offset" semantic conventions. It represents the offset of a
- // record in the corresponding Kafka partition.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingKafkaOffsetKey = attribute.Key("messaging.kafka.offset")
-
- // MessagingMessageBodySizeKey is the attribute Key conforming to the
- // "messaging.message.body.size" semantic conventions. It represents the size of
- // the message body in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: This can refer to both the compressed or uncompressed body size. If
- // both sizes are known, the uncompressed
- // body size should be used.
- MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size")
-
- // MessagingMessageConversationIDKey is the attribute Key conforming to the
- // "messaging.message.conversation_id" semantic conventions. It represents the
- // conversation ID identifying the conversation to which the message belongs,
- // represented as a string. Sometimes called "Correlation ID".
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: MyConversationId
- MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id")
-
- // MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the
- // "messaging.message.envelope.size" semantic conventions. It represents the
- // size of the message body and metadata in bytes.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note: This can refer to both the compressed or uncompressed size. If both
- // sizes are known, the uncompressed
- // size should be used.
- MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size")
-
- // MessagingMessageIDKey is the attribute Key conforming to the
- // "messaging.message.id" semantic conventions. It represents a value used by
- // the messaging system as an identifier for the message, represented as a
- // string.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 452a7c7c7c7048c2f887f61572b18fc2
- MessagingMessageIDKey = attribute.Key("messaging.message.id")
-
- // MessagingOperationNameKey is the attribute Key conforming to the
- // "messaging.operation.name" semantic conventions. It represents the
- // system-specific name of the messaging operation.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ack", "nack", "send"
- MessagingOperationNameKey = attribute.Key("messaging.operation.name")
-
- // MessagingOperationTypeKey is the attribute Key conforming to the
- // "messaging.operation.type" semantic conventions. It represents a string
- // identifying the type of the messaging operation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: If a custom value is used, it MUST be of low cardinality.
- MessagingOperationTypeKey = attribute.Key("messaging.operation.type")
-
- // MessagingRabbitMQDestinationRoutingKeyKey is the attribute Key conforming to
- // the "messaging.rabbitmq.destination.routing_key" semantic conventions. It
- // represents the rabbitMQ message routing key.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myKey
- MessagingRabbitMQDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key")
-
- // MessagingRabbitMQMessageDeliveryTagKey is the attribute Key conforming to the
- // "messaging.rabbitmq.message.delivery_tag" semantic conventions. It represents
- // the rabbitMQ message delivery tag.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRabbitMQMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag")
-
- // MessagingRocketMQConsumptionModelKey is the attribute Key conforming to the
- // "messaging.rocketmq.consumption_model" semantic conventions. It represents
- // the model of message consumption. This only applies to consumer spans.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingRocketMQConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model")
-
- // MessagingRocketMQMessageDelayTimeLevelKey is the attribute Key conforming to
- // the "messaging.rocketmq.message.delay_time_level" semantic conventions. It
- // represents the delay time level for delay message, which determines the
- // message delay time.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRocketMQMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level")
-
- // MessagingRocketMQMessageDeliveryTimestampKey is the attribute Key conforming
- // to the "messaging.rocketmq.message.delivery_timestamp" semantic conventions.
- // It represents the timestamp in milliseconds that the delay message is
- // expected to be delivered to consumer.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingRocketMQMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp")
-
- // MessagingRocketMQMessageGroupKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.group" semantic conventions. It represents the it
- // is essential for FIFO message. Messages that belong to the same message group
- // are always processed one by one within the same consumer group.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myMessageGroup
- MessagingRocketMQMessageGroupKey = attribute.Key("messaging.rocketmq.message.group")
-
- // MessagingRocketMQMessageKeysKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.keys" semantic conventions. It represents the
- // key(s) of message, another way to mark message besides message id.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "keyA", "keyB"
- MessagingRocketMQMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys")
-
- // MessagingRocketMQMessageTagKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.tag" semantic conventions. It represents the
- // secondary classifier of message besides topic.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: tagA
- MessagingRocketMQMessageTagKey = attribute.Key("messaging.rocketmq.message.tag")
-
- // MessagingRocketMQMessageTypeKey is the attribute Key conforming to the
- // "messaging.rocketmq.message.type" semantic conventions. It represents the
- // type of message.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- MessagingRocketMQMessageTypeKey = attribute.Key("messaging.rocketmq.message.type")
-
- // MessagingRocketMQNamespaceKey is the attribute Key conforming to the
- // "messaging.rocketmq.namespace" semantic conventions. It represents the
- // namespace of RocketMQ resources, resources in different namespaces are
- // individual.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: myNamespace
- MessagingRocketMQNamespaceKey = attribute.Key("messaging.rocketmq.namespace")
-
- // MessagingServiceBusDispositionStatusKey is the attribute Key conforming to
- // the "messaging.servicebus.disposition_status" semantic conventions. It
- // represents the describes the [settlement type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [settlement type]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock
- MessagingServiceBusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status")
-
- // MessagingServiceBusMessageDeliveryCountKey is the attribute Key conforming to
- // the "messaging.servicebus.message.delivery_count" semantic conventions. It
- // represents the number of deliveries that have been attempted for this
- // message.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingServiceBusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count")
-
- // MessagingServiceBusMessageEnqueuedTimeKey is the attribute Key conforming to
- // the "messaging.servicebus.message.enqueued_time" semantic conventions. It
- // represents the UTC epoch seconds at which the message has been accepted and
- // stored in the entity.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- MessagingServiceBusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time")
-
- // MessagingSystemKey is the attribute Key conforming to the "messaging.system"
- // semantic conventions. It represents the messaging system as identified by the
- // client instrumentation.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The actual messaging system may differ from the one known by the
- // client. For example, when using Kafka client libraries to communicate with
- // Azure Event Hubs, the `messaging.system` is set to `kafka` based on the
- // instrumentation's best knowledge.
- MessagingSystemKey = attribute.Key("messaging.system")
-)
-
-// MessagingBatchMessageCount returns an attribute KeyValue conforming to the
-// "messaging.batch.message_count" semantic conventions. It represents the number
-// of messages sent, received, or processed in the scope of the batching
-// operation.
-func MessagingBatchMessageCount(val int) attribute.KeyValue {
- return MessagingBatchMessageCountKey.Int(val)
-}
-
-// MessagingClientID returns an attribute KeyValue conforming to the
-// "messaging.client.id" semantic conventions. It represents a unique identifier
-// for the client that consumes or produces a message.
-func MessagingClientID(val string) attribute.KeyValue {
- return MessagingClientIDKey.String(val)
-}
-
-// MessagingConsumerGroupName returns an attribute KeyValue conforming to the
-// "messaging.consumer.group.name" semantic conventions. It represents the name
-// of the consumer group with which a consumer is associated.
-func MessagingConsumerGroupName(val string) attribute.KeyValue {
- return MessagingConsumerGroupNameKey.String(val)
-}
-
-// MessagingDestinationAnonymous returns an attribute KeyValue conforming to the
-// "messaging.destination.anonymous" semantic conventions. It represents a
-// boolean that is true if the message destination is anonymous (could be unnamed
-// or have auto-generated name).
-func MessagingDestinationAnonymous(val bool) attribute.KeyValue {
- return MessagingDestinationAnonymousKey.Bool(val)
-}
-
-// MessagingDestinationName returns an attribute KeyValue conforming to the
-// "messaging.destination.name" semantic conventions. It represents the message
-// destination name.
-func MessagingDestinationName(val string) attribute.KeyValue {
- return MessagingDestinationNameKey.String(val)
-}
-
-// MessagingDestinationPartitionID returns an attribute KeyValue conforming to
-// the "messaging.destination.partition.id" semantic conventions. It represents
-// the identifier of the partition messages are sent to or received from, unique
-// within the `messaging.destination.name`.
-func MessagingDestinationPartitionID(val string) attribute.KeyValue {
- return MessagingDestinationPartitionIDKey.String(val)
-}
-
-// MessagingDestinationSubscriptionName returns an attribute KeyValue conforming
-// to the "messaging.destination.subscription.name" semantic conventions. It
-// represents the name of the destination subscription from which a message is
-// consumed.
-func MessagingDestinationSubscriptionName(val string) attribute.KeyValue {
- return MessagingDestinationSubscriptionNameKey.String(val)
-}
-
-// MessagingDestinationTemplate returns an attribute KeyValue conforming to the
-// "messaging.destination.template" semantic conventions. It represents the low
-// cardinality representation of the messaging destination name.
-func MessagingDestinationTemplate(val string) attribute.KeyValue {
- return MessagingDestinationTemplateKey.String(val)
-}
-
-// MessagingDestinationTemporary returns an attribute KeyValue conforming to the
-// "messaging.destination.temporary" semantic conventions. It represents a
-// boolean that is true if the message destination is temporary and might not
-// exist anymore after messages are processed.
-func MessagingDestinationTemporary(val bool) attribute.KeyValue {
- return MessagingDestinationTemporaryKey.Bool(val)
-}
-
-// MessagingEventHubsMessageEnqueuedTime returns an attribute KeyValue conforming
-// to the "messaging.eventhubs.message.enqueued_time" semantic conventions. It
-// represents the UTC epoch seconds at which the message has been accepted and
-// stored in the entity.
-func MessagingEventHubsMessageEnqueuedTime(val int) attribute.KeyValue {
- return MessagingEventHubsMessageEnqueuedTimeKey.Int(val)
-}
-
-// MessagingGCPPubSubMessageAckDeadline returns an attribute KeyValue conforming
-// to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It
-// represents the ack deadline in seconds set for the modify ack deadline
-// request.
-func MessagingGCPPubSubMessageAckDeadline(val int) attribute.KeyValue {
- return MessagingGCPPubSubMessageAckDeadlineKey.Int(val)
-}
-
-// MessagingGCPPubSubMessageAckID returns an attribute KeyValue conforming to the
-// "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the
-// ack id for a given message.
-func MessagingGCPPubSubMessageAckID(val string) attribute.KeyValue {
- return MessagingGCPPubSubMessageAckIDKey.String(val)
-}
-
-// MessagingGCPPubSubMessageDeliveryAttempt returns an attribute KeyValue
-// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic
-// conventions. It represents the delivery attempt for a given message.
-func MessagingGCPPubSubMessageDeliveryAttempt(val int) attribute.KeyValue {
- return MessagingGCPPubSubMessageDeliveryAttemptKey.Int(val)
-}
-
-// MessagingGCPPubSubMessageOrderingKey returns an attribute KeyValue conforming
-// to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It
-// represents the ordering key for a given message. If the attribute is not
-// present, the message does not have an ordering key.
-func MessagingGCPPubSubMessageOrderingKey(val string) attribute.KeyValue {
- return MessagingGCPPubSubMessageOrderingKeyKey.String(val)
-}
-
-// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the
-// "messaging.kafka.message.key" semantic conventions. It represents the message
-// keys in Kafka are used for grouping alike messages to ensure they're processed
-// on the same partition. They differ from `messaging.message.id` in that they're
-// not unique. If the key is `null`, the attribute MUST NOT be set.
-func MessagingKafkaMessageKey(val string) attribute.KeyValue {
- return MessagingKafkaMessageKeyKey.String(val)
-}
-
-// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming to the
-// "messaging.kafka.message.tombstone" semantic conventions. It represents a
-// boolean that is true if the message is a tombstone.
-func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue {
- return MessagingKafkaMessageTombstoneKey.Bool(val)
-}
-
-// MessagingKafkaOffset returns an attribute KeyValue conforming to the
-// "messaging.kafka.offset" semantic conventions. It represents the offset of a
-// record in the corresponding Kafka partition.
-func MessagingKafkaOffset(val int) attribute.KeyValue {
- return MessagingKafkaOffsetKey.Int(val)
-}
-
-// MessagingMessageBodySize returns an attribute KeyValue conforming to the
-// "messaging.message.body.size" semantic conventions. It represents the size of
-// the message body in bytes.
-func MessagingMessageBodySize(val int) attribute.KeyValue {
- return MessagingMessageBodySizeKey.Int(val)
-}
-
-// MessagingMessageConversationID returns an attribute KeyValue conforming to the
-// "messaging.message.conversation_id" semantic conventions. It represents the
-// conversation ID identifying the conversation to which the message belongs,
-// represented as a string. Sometimes called "Correlation ID".
-func MessagingMessageConversationID(val string) attribute.KeyValue {
- return MessagingMessageConversationIDKey.String(val)
-}
-
-// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to the
-// "messaging.message.envelope.size" semantic conventions. It represents the size
-// of the message body and metadata in bytes.
-func MessagingMessageEnvelopeSize(val int) attribute.KeyValue {
- return MessagingMessageEnvelopeSizeKey.Int(val)
-}
-
-// MessagingMessageID returns an attribute KeyValue conforming to the
-// "messaging.message.id" semantic conventions. It represents a value used by the
-// messaging system as an identifier for the message, represented as a string.
-func MessagingMessageID(val string) attribute.KeyValue {
- return MessagingMessageIDKey.String(val)
-}
-
-// MessagingOperationName returns an attribute KeyValue conforming to the
-// "messaging.operation.name" semantic conventions. It represents the
-// system-specific name of the messaging operation.
-func MessagingOperationName(val string) attribute.KeyValue {
- return MessagingOperationNameKey.String(val)
-}
-
-// MessagingRabbitMQDestinationRoutingKey returns an attribute KeyValue
-// conforming to the "messaging.rabbitmq.destination.routing_key" semantic
-// conventions. It represents the rabbitMQ message routing key.
-func MessagingRabbitMQDestinationRoutingKey(val string) attribute.KeyValue {
- return MessagingRabbitMQDestinationRoutingKeyKey.String(val)
-}
-
-// MessagingRabbitMQMessageDeliveryTag returns an attribute KeyValue conforming
-// to the "messaging.rabbitmq.message.delivery_tag" semantic conventions. It
-// represents the rabbitMQ message delivery tag.
-func MessagingRabbitMQMessageDeliveryTag(val int) attribute.KeyValue {
- return MessagingRabbitMQMessageDeliveryTagKey.Int(val)
-}
-
-// MessagingRocketMQMessageDelayTimeLevel returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delay_time_level" semantic
-// conventions. It represents the delay time level for delay message, which
-// determines the message delay time.
-func MessagingRocketMQMessageDelayTimeLevel(val int) attribute.KeyValue {
- return MessagingRocketMQMessageDelayTimeLevelKey.Int(val)
-}
-
-// MessagingRocketMQMessageDeliveryTimestamp returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic
-// conventions. It represents the timestamp in milliseconds that the delay
-// message is expected to be delivered to consumer.
-func MessagingRocketMQMessageDeliveryTimestamp(val int) attribute.KeyValue {
- return MessagingRocketMQMessageDeliveryTimestampKey.Int(val)
-}
-
-// MessagingRocketMQMessageGroup returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.group" semantic conventions. It represents the it
-// is essential for FIFO message. Messages that belong to the same message group
-// are always processed one by one within the same consumer group.
-func MessagingRocketMQMessageGroup(val string) attribute.KeyValue {
- return MessagingRocketMQMessageGroupKey.String(val)
-}
-
-// MessagingRocketMQMessageKeys returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.keys" semantic conventions. It represents the
-// key(s) of message, another way to mark message besides message id.
-func MessagingRocketMQMessageKeys(val ...string) attribute.KeyValue {
- return MessagingRocketMQMessageKeysKey.StringSlice(val)
-}
-
-// MessagingRocketMQMessageTag returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.message.tag" semantic conventions. It represents the
-// secondary classifier of message besides topic.
-func MessagingRocketMQMessageTag(val string) attribute.KeyValue {
- return MessagingRocketMQMessageTagKey.String(val)
-}
-
-// MessagingRocketMQNamespace returns an attribute KeyValue conforming to the
-// "messaging.rocketmq.namespace" semantic conventions. It represents the
-// namespace of RocketMQ resources, resources in different namespaces are
-// individual.
-func MessagingRocketMQNamespace(val string) attribute.KeyValue {
- return MessagingRocketMQNamespaceKey.String(val)
-}
-
-// MessagingServiceBusMessageDeliveryCount returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.delivery_count" semantic
-// conventions. It represents the number of deliveries that have been attempted
-// for this message.
-func MessagingServiceBusMessageDeliveryCount(val int) attribute.KeyValue {
- return MessagingServiceBusMessageDeliveryCountKey.Int(val)
-}
-
-// MessagingServiceBusMessageEnqueuedTime returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.enqueued_time" semantic
-// conventions. It represents the UTC epoch seconds at which the message has been
-// accepted and stored in the entity.
-func MessagingServiceBusMessageEnqueuedTime(val int) attribute.KeyValue {
- return MessagingServiceBusMessageEnqueuedTimeKey.Int(val)
-}
-
-// Enum values for messaging.operation.type
-var (
- // A message is created. "Create" spans always refer to a single message and are
- // used to provide a unique creation context for messages in batch sending
- // scenarios.
- //
- // Stability: development
- MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create")
- // One or more messages are provided for sending to an intermediary. If a single
- // message is sent, the context of the "Send" span can be used as the creation
- // context and no "Create" span needs to be created.
- //
- // Stability: development
- MessagingOperationTypeSend = MessagingOperationTypeKey.String("send")
- // One or more messages are requested by a consumer. This operation refers to
- // pull-based scenarios, where consumers explicitly call methods of messaging
- // SDKs to receive messages.
- //
- // Stability: development
- MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive")
- // One or more messages are processed by a consumer.
- //
- // Stability: development
- MessagingOperationTypeProcess = MessagingOperationTypeKey.String("process")
- // One or more messages are settled.
- //
- // Stability: development
- MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle")
-)
-
-// Enum values for messaging.rocketmq.consumption_model
-var (
- // Clustering consumption model
- // Stability: development
- MessagingRocketMQConsumptionModelClustering = MessagingRocketMQConsumptionModelKey.String("clustering")
- // Broadcasting consumption model
- // Stability: development
- MessagingRocketMQConsumptionModelBroadcasting = MessagingRocketMQConsumptionModelKey.String("broadcasting")
-)
-
-// Enum values for messaging.rocketmq.message.type
-var (
- // Normal message
- // Stability: development
- MessagingRocketMQMessageTypeNormal = MessagingRocketMQMessageTypeKey.String("normal")
- // FIFO message
- // Stability: development
- MessagingRocketMQMessageTypeFifo = MessagingRocketMQMessageTypeKey.String("fifo")
- // Delay message
- // Stability: development
- MessagingRocketMQMessageTypeDelay = MessagingRocketMQMessageTypeKey.String("delay")
- // Transaction message
- // Stability: development
- MessagingRocketMQMessageTypeTransaction = MessagingRocketMQMessageTypeKey.String("transaction")
-)
-
-// Enum values for messaging.servicebus.disposition_status
-var (
- // Message is completed
- // Stability: development
- MessagingServiceBusDispositionStatusComplete = MessagingServiceBusDispositionStatusKey.String("complete")
- // Message is abandoned
- // Stability: development
- MessagingServiceBusDispositionStatusAbandon = MessagingServiceBusDispositionStatusKey.String("abandon")
- // Message is sent to dead letter queue
- // Stability: development
- MessagingServiceBusDispositionStatusDeadLetter = MessagingServiceBusDispositionStatusKey.String("dead_letter")
- // Message is deferred
- // Stability: development
- MessagingServiceBusDispositionStatusDefer = MessagingServiceBusDispositionStatusKey.String("defer")
-)
-
-// Enum values for messaging.system
-var (
- // Apache ActiveMQ
- // Stability: development
- MessagingSystemActiveMQ = MessagingSystemKey.String("activemq")
- // Amazon Simple Notification Service (SNS)
- // Stability: development
- MessagingSystemAWSSNS = MessagingSystemKey.String("aws.sns")
- // Amazon Simple Queue Service (SQS)
- // Stability: development
- MessagingSystemAWSSQS = MessagingSystemKey.String("aws_sqs")
- // Azure Event Grid
- // Stability: development
- MessagingSystemEventGrid = MessagingSystemKey.String("eventgrid")
- // Azure Event Hubs
- // Stability: development
- MessagingSystemEventHubs = MessagingSystemKey.String("eventhubs")
- // Azure Service Bus
- // Stability: development
- MessagingSystemServiceBus = MessagingSystemKey.String("servicebus")
- // Google Cloud Pub/Sub
- // Stability: development
- MessagingSystemGCPPubSub = MessagingSystemKey.String("gcp_pubsub")
- // Java Message Service
- // Stability: development
- MessagingSystemJMS = MessagingSystemKey.String("jms")
- // Apache Kafka
- // Stability: development
- MessagingSystemKafka = MessagingSystemKey.String("kafka")
- // RabbitMQ
- // Stability: development
- MessagingSystemRabbitMQ = MessagingSystemKey.String("rabbitmq")
- // Apache RocketMQ
- // Stability: development
- MessagingSystemRocketMQ = MessagingSystemKey.String("rocketmq")
- // Apache Pulsar
- // Stability: development
- MessagingSystemPulsar = MessagingSystemKey.String("pulsar")
-)
-
-// Namespace: network
-const (
- // NetworkCarrierICCKey is the attribute Key conforming to the
- // "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
- // alpha-2 2-character country code associated with the mobile carrier network.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: DE
- NetworkCarrierICCKey = attribute.Key("network.carrier.icc")
-
- // NetworkCarrierMCCKey is the attribute Key conforming to the
- // "network.carrier.mcc" semantic conventions. It represents the mobile carrier
- // country code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 310
- NetworkCarrierMCCKey = attribute.Key("network.carrier.mcc")
-
- // NetworkCarrierMNCKey is the attribute Key conforming to the
- // "network.carrier.mnc" semantic conventions. It represents the mobile carrier
- // network code.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 001
- NetworkCarrierMNCKey = attribute.Key("network.carrier.mnc")
-
- // NetworkCarrierNameKey is the attribute Key conforming to the
- // "network.carrier.name" semantic conventions. It represents the name of the
- // mobile carrier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: sprint
- NetworkCarrierNameKey = attribute.Key("network.carrier.name")
-
- // NetworkConnectionStateKey is the attribute Key conforming to the
- // "network.connection.state" semantic conventions. It represents the state of
- // network connection.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "close_wait"
- // Note: Connection states are defined as part of the [rfc9293]
- //
- // [rfc9293]: https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2
- NetworkConnectionStateKey = attribute.Key("network.connection.state")
-
- // NetworkConnectionSubtypeKey is the attribute Key conforming to the
- // "network.connection.subtype" semantic conventions. It represents the this
- // describes more details regarding the connection.type. It may be the type of
- // cell technology connection, but it could be used for describing details about
- // a wifi connection.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: LTE
- NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype")
-
- // NetworkConnectionTypeKey is the attribute Key conforming to the
- // "network.connection.type" semantic conventions. It represents the internet
- // connection type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: wifi
- NetworkConnectionTypeKey = attribute.Key("network.connection.type")
-
- // NetworkInterfaceNameKey is the attribute Key conforming to the
- // "network.interface.name" semantic conventions. It represents the network
- // interface name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "lo", "eth0"
- NetworkInterfaceNameKey = attribute.Key("network.interface.name")
-
- // NetworkIODirectionKey is the attribute Key conforming to the
- // "network.io.direction" semantic conventions. It represents the network IO
- // operation direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "transmit"
- NetworkIODirectionKey = attribute.Key("network.io.direction")
-
- // NetworkLocalAddressKey is the attribute Key conforming to the
- // "network.local.address" semantic conventions. It represents the local address
- // of the network connection - IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "10.1.2.80", "/tmp/my.sock"
- NetworkLocalAddressKey = attribute.Key("network.local.address")
-
- // NetworkLocalPortKey is the attribute Key conforming to the
- // "network.local.port" semantic conventions. It represents the local port
- // number of the network connection.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- NetworkLocalPortKey = attribute.Key("network.local.port")
-
- // NetworkPeerAddressKey is the attribute Key conforming to the
- // "network.peer.address" semantic conventions. It represents the peer address
- // of the network connection - IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "10.1.2.80", "/tmp/my.sock"
- NetworkPeerAddressKey = attribute.Key("network.peer.address")
-
- // NetworkPeerPortKey is the attribute Key conforming to the "network.peer.port"
- // semantic conventions. It represents the peer port number of the network
- // connection.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 65123
- NetworkPeerPortKey = attribute.Key("network.peer.port")
-
- // NetworkProtocolNameKey is the attribute Key conforming to the
- // "network.protocol.name" semantic conventions. It represents the
- // [OSI application layer] or non-OSI equivalent.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "amqp", "http", "mqtt"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // [OSI application layer]: https://wikipedia.org/wiki/Application_layer
- NetworkProtocolNameKey = attribute.Key("network.protocol.name")
-
- // NetworkProtocolVersionKey is the attribute Key conforming to the
- // "network.protocol.version" semantic conventions. It represents the actual
- // version of the protocol used for network communication.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.1", "2"
- // Note: If protocol version is subject to negotiation (for example using [ALPN]
- // ), this attribute SHOULD be set to the negotiated version. If the actual
- // protocol version is not known, this attribute SHOULD NOT be set.
- //
- // [ALPN]: https://www.rfc-editor.org/rfc/rfc7301.html
- NetworkProtocolVersionKey = attribute.Key("network.protocol.version")
-
- // NetworkTransportKey is the attribute Key conforming to the
- // "network.transport" semantic conventions. It represents the
- // [OSI transport layer] or [inter-process communication method].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "tcp", "udp"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // Consider always setting the transport when setting a port number, since
- // a port number is ambiguous without knowing the transport. For example
- // different processes could be listening on TCP port 12345 and UDP port 12345.
- //
- // [OSI transport layer]: https://wikipedia.org/wiki/Transport_layer
- // [inter-process communication method]: https://wikipedia.org/wiki/Inter-process_communication
- NetworkTransportKey = attribute.Key("network.transport")
-
- // NetworkTypeKey is the attribute Key conforming to the "network.type" semantic
- // conventions. It represents the [OSI network layer] or non-OSI equivalent.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "ipv4", "ipv6"
- // Note: The value SHOULD be normalized to lowercase.
- //
- // [OSI network layer]: https://wikipedia.org/wiki/Network_layer
- NetworkTypeKey = attribute.Key("network.type")
-)
-
-// NetworkCarrierICC returns an attribute KeyValue conforming to the
-// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
-// alpha-2 2-character country code associated with the mobile carrier network.
-func NetworkCarrierICC(val string) attribute.KeyValue {
- return NetworkCarrierICCKey.String(val)
-}
-
-// NetworkCarrierMCC returns an attribute KeyValue conforming to the
-// "network.carrier.mcc" semantic conventions. It represents the mobile carrier
-// country code.
-func NetworkCarrierMCC(val string) attribute.KeyValue {
- return NetworkCarrierMCCKey.String(val)
-}
-
-// NetworkCarrierMNC returns an attribute KeyValue conforming to the
-// "network.carrier.mnc" semantic conventions. It represents the mobile carrier
-// network code.
-func NetworkCarrierMNC(val string) attribute.KeyValue {
- return NetworkCarrierMNCKey.String(val)
-}
-
-// NetworkCarrierName returns an attribute KeyValue conforming to the
-// "network.carrier.name" semantic conventions. It represents the name of the
-// mobile carrier.
-func NetworkCarrierName(val string) attribute.KeyValue {
- return NetworkCarrierNameKey.String(val)
-}
-
-// NetworkInterfaceName returns an attribute KeyValue conforming to the
-// "network.interface.name" semantic conventions. It represents the network
-// interface name.
-func NetworkInterfaceName(val string) attribute.KeyValue {
- return NetworkInterfaceNameKey.String(val)
-}
-
-// NetworkLocalAddress returns an attribute KeyValue conforming to the
-// "network.local.address" semantic conventions. It represents the local address
-// of the network connection - IP address or Unix domain socket name.
-func NetworkLocalAddress(val string) attribute.KeyValue {
- return NetworkLocalAddressKey.String(val)
-}
-
-// NetworkLocalPort returns an attribute KeyValue conforming to the
-// "network.local.port" semantic conventions. It represents the local port number
-// of the network connection.
-func NetworkLocalPort(val int) attribute.KeyValue {
- return NetworkLocalPortKey.Int(val)
-}
-
-// NetworkPeerAddress returns an attribute KeyValue conforming to the
-// "network.peer.address" semantic conventions. It represents the peer address of
-// the network connection - IP address or Unix domain socket name.
-func NetworkPeerAddress(val string) attribute.KeyValue {
- return NetworkPeerAddressKey.String(val)
-}
-
-// NetworkPeerPort returns an attribute KeyValue conforming to the
-// "network.peer.port" semantic conventions. It represents the peer port number
-// of the network connection.
-func NetworkPeerPort(val int) attribute.KeyValue {
- return NetworkPeerPortKey.Int(val)
-}
-
-// NetworkProtocolName returns an attribute KeyValue conforming to the
-// "network.protocol.name" semantic conventions. It represents the
-// [OSI application layer] or non-OSI equivalent.
-//
-// [OSI application layer]: https://wikipedia.org/wiki/Application_layer
-func NetworkProtocolName(val string) attribute.KeyValue {
- return NetworkProtocolNameKey.String(val)
-}
-
-// NetworkProtocolVersion returns an attribute KeyValue conforming to the
-// "network.protocol.version" semantic conventions. It represents the actual
-// version of the protocol used for network communication.
-func NetworkProtocolVersion(val string) attribute.KeyValue {
- return NetworkProtocolVersionKey.String(val)
-}
-
-// Enum values for network.connection.state
-var (
- // closed
- // Stability: development
- NetworkConnectionStateClosed = NetworkConnectionStateKey.String("closed")
- // close_wait
- // Stability: development
- NetworkConnectionStateCloseWait = NetworkConnectionStateKey.String("close_wait")
- // closing
- // Stability: development
- NetworkConnectionStateClosing = NetworkConnectionStateKey.String("closing")
- // established
- // Stability: development
- NetworkConnectionStateEstablished = NetworkConnectionStateKey.String("established")
- // fin_wait_1
- // Stability: development
- NetworkConnectionStateFinWait1 = NetworkConnectionStateKey.String("fin_wait_1")
- // fin_wait_2
- // Stability: development
- NetworkConnectionStateFinWait2 = NetworkConnectionStateKey.String("fin_wait_2")
- // last_ack
- // Stability: development
- NetworkConnectionStateLastAck = NetworkConnectionStateKey.String("last_ack")
- // listen
- // Stability: development
- NetworkConnectionStateListen = NetworkConnectionStateKey.String("listen")
- // syn_received
- // Stability: development
- NetworkConnectionStateSynReceived = NetworkConnectionStateKey.String("syn_received")
- // syn_sent
- // Stability: development
- NetworkConnectionStateSynSent = NetworkConnectionStateKey.String("syn_sent")
- // time_wait
- // Stability: development
- NetworkConnectionStateTimeWait = NetworkConnectionStateKey.String("time_wait")
-)
-
-// Enum values for network.connection.subtype
-var (
- // GPRS
- // Stability: development
- NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs")
- // EDGE
- // Stability: development
- NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge")
- // UMTS
- // Stability: development
- NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts")
- // CDMA
- // Stability: development
- NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma")
- // EVDO Rel. 0
- // Stability: development
- NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0")
- // EVDO Rev. A
- // Stability: development
- NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a")
- // CDMA2000 1XRTT
- // Stability: development
- NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt")
- // HSDPA
- // Stability: development
- NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa")
- // HSUPA
- // Stability: development
- NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa")
- // HSPA
- // Stability: development
- NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa")
- // IDEN
- // Stability: development
- NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden")
- // EVDO Rev. B
- // Stability: development
- NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b")
- // LTE
- // Stability: development
- NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte")
- // EHRPD
- // Stability: development
- NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd")
- // HSPAP
- // Stability: development
- NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap")
- // GSM
- // Stability: development
- NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm")
- // TD-SCDMA
- // Stability: development
- NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma")
- // IWLAN
- // Stability: development
- NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan")
- // 5G NR (New Radio)
- // Stability: development
- NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr")
- // 5G NRNSA (New Radio Non-Standalone)
- // Stability: development
- NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa")
- // LTE CA
- // Stability: development
- NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca")
-)
-
-// Enum values for network.connection.type
-var (
- // wifi
- // Stability: development
- NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi")
- // wired
- // Stability: development
- NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired")
- // cell
- // Stability: development
- NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell")
- // unavailable
- // Stability: development
- NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable")
- // unknown
- // Stability: development
- NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown")
-)
-
-// Enum values for network.io.direction
-var (
- // transmit
- // Stability: development
- NetworkIODirectionTransmit = NetworkIODirectionKey.String("transmit")
- // receive
- // Stability: development
- NetworkIODirectionReceive = NetworkIODirectionKey.String("receive")
-)
-
-// Enum values for network.transport
-var (
- // TCP
- // Stability: stable
- NetworkTransportTCP = NetworkTransportKey.String("tcp")
- // UDP
- // Stability: stable
- NetworkTransportUDP = NetworkTransportKey.String("udp")
- // Named or anonymous pipe.
- // Stability: stable
- NetworkTransportPipe = NetworkTransportKey.String("pipe")
- // Unix domain socket
- // Stability: stable
- NetworkTransportUnix = NetworkTransportKey.String("unix")
- // QUIC
- // Stability: stable
- NetworkTransportQUIC = NetworkTransportKey.String("quic")
-)
-
-// Enum values for network.type
-var (
- // IPv4
- // Stability: stable
- NetworkTypeIPv4 = NetworkTypeKey.String("ipv4")
- // IPv6
- // Stability: stable
- NetworkTypeIPv6 = NetworkTypeKey.String("ipv6")
-)
-
-// Namespace: nfs
-const (
- // NfsOperationNameKey is the attribute Key conforming to the
- // "nfs.operation.name" semantic conventions. It represents the NFSv4+ operation
- // name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "OPEN", "READ", "GETATTR"
- NfsOperationNameKey = attribute.Key("nfs.operation.name")
-
- // NfsServerRepcacheStatusKey is the attribute Key conforming to the
- // "nfs.server.repcache.status" semantic conventions. It represents the linux:
- // one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or
- // "nocache" (NFSD_STATS_RC_NOCACHE -- uncacheable).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: hit
- NfsServerRepcacheStatusKey = attribute.Key("nfs.server.repcache.status")
-)
-
-// NfsOperationName returns an attribute KeyValue conforming to the
-// "nfs.operation.name" semantic conventions. It represents the NFSv4+ operation
-// name.
-func NfsOperationName(val string) attribute.KeyValue {
- return NfsOperationNameKey.String(val)
-}
-
-// NfsServerRepcacheStatus returns an attribute KeyValue conforming to the
-// "nfs.server.repcache.status" semantic conventions. It represents the linux:
-// one of "hit" (NFSD_STATS_RC_HITS), "miss" (NFSD_STATS_RC_MISSES), or "nocache"
-// (NFSD_STATS_RC_NOCACHE -- uncacheable).
-func NfsServerRepcacheStatus(val string) attribute.KeyValue {
- return NfsServerRepcacheStatusKey.String(val)
-}
-
-// Namespace: oci
-const (
- // OCIManifestDigestKey is the attribute Key conforming to the
- // "oci.manifest.digest" semantic conventions. It represents the digest of the
- // OCI image manifest. For container images specifically is the digest by which
- // the container image is known.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4"
- // Note: Follows [OCI Image Manifest Specification], and specifically the
- // [Digest property].
- // An example can be found in [Example Image Manifest].
- //
- // [OCI Image Manifest Specification]: https://github.com/opencontainers/image-spec/blob/main/manifest.md
- // [Digest property]: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests
- // [Example Image Manifest]: https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest
- OCIManifestDigestKey = attribute.Key("oci.manifest.digest")
-)
-
-// OCIManifestDigest returns an attribute KeyValue conforming to the
-// "oci.manifest.digest" semantic conventions. It represents the digest of the
-// OCI image manifest. For container images specifically is the digest by which
-// the container image is known.
-func OCIManifestDigest(val string) attribute.KeyValue {
- return OCIManifestDigestKey.String(val)
-}
-
-// Namespace: onc_rpc
-const (
- // OncRPCProcedureNameKey is the attribute Key conforming to the
- // "onc_rpc.procedure.name" semantic conventions. It represents the ONC/Sun RPC
- // procedure name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "OPEN", "READ", "GETATTR"
- OncRPCProcedureNameKey = attribute.Key("onc_rpc.procedure.name")
-
- // OncRPCProcedureNumberKey is the attribute Key conforming to the
- // "onc_rpc.procedure.number" semantic conventions. It represents the ONC/Sun
- // RPC procedure number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OncRPCProcedureNumberKey = attribute.Key("onc_rpc.procedure.number")
-
- // OncRPCProgramNameKey is the attribute Key conforming to the
- // "onc_rpc.program.name" semantic conventions. It represents the ONC/Sun RPC
- // program name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "portmapper", "nfs"
- OncRPCProgramNameKey = attribute.Key("onc_rpc.program.name")
-
- // OncRPCVersionKey is the attribute Key conforming to the "onc_rpc.version"
- // semantic conventions. It represents the ONC/Sun RPC program version.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OncRPCVersionKey = attribute.Key("onc_rpc.version")
-)
-
-// OncRPCProcedureName returns an attribute KeyValue conforming to the
-// "onc_rpc.procedure.name" semantic conventions. It represents the ONC/Sun RPC
-// procedure name.
-func OncRPCProcedureName(val string) attribute.KeyValue {
- return OncRPCProcedureNameKey.String(val)
-}
-
-// OncRPCProcedureNumber returns an attribute KeyValue conforming to the
-// "onc_rpc.procedure.number" semantic conventions. It represents the ONC/Sun RPC
-// procedure number.
-func OncRPCProcedureNumber(val int) attribute.KeyValue {
- return OncRPCProcedureNumberKey.Int(val)
-}
-
-// OncRPCProgramName returns an attribute KeyValue conforming to the
-// "onc_rpc.program.name" semantic conventions. It represents the ONC/Sun RPC
-// program name.
-func OncRPCProgramName(val string) attribute.KeyValue {
- return OncRPCProgramNameKey.String(val)
-}
-
-// OncRPCVersion returns an attribute KeyValue conforming to the
-// "onc_rpc.version" semantic conventions. It represents the ONC/Sun RPC program
-// version.
-func OncRPCVersion(val int) attribute.KeyValue {
- return OncRPCVersionKey.Int(val)
-}
-
-// Namespace: openai
-const (
- // OpenAIAPITypeKey is the attribute Key conforming to the "openai.api.type"
- // semantic conventions. It represents the type of OpenAI API being used.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OpenAIAPITypeKey = attribute.Key("openai.api.type")
-
- // OpenAIRequestServiceTierKey is the attribute Key conforming to the
- // "openai.request.service_tier" semantic conventions. It represents the service
- // tier requested. May be a specific tier, default, or auto.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "auto", "default"
- OpenAIRequestServiceTierKey = attribute.Key("openai.request.service_tier")
-
- // OpenAIResponseServiceTierKey is the attribute Key conforming to the
- // "openai.response.service_tier" semantic conventions. It represents the
- // service tier used for the response.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "scale", "default"
- OpenAIResponseServiceTierKey = attribute.Key("openai.response.service_tier")
-
- // OpenAIResponseSystemFingerprintKey is the attribute Key conforming to the
- // "openai.response.system_fingerprint" semantic conventions. It represents a
- // fingerprint to track any eventual change in the Generative AI environment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "fp_44709d6fcb"
- OpenAIResponseSystemFingerprintKey = attribute.Key("openai.response.system_fingerprint")
-)
-
-// OpenAIResponseServiceTier returns an attribute KeyValue conforming to the
-// "openai.response.service_tier" semantic conventions. It represents the service
-// tier used for the response.
-func OpenAIResponseServiceTier(val string) attribute.KeyValue {
- return OpenAIResponseServiceTierKey.String(val)
-}
-
-// OpenAIResponseSystemFingerprint returns an attribute KeyValue conforming to
-// the "openai.response.system_fingerprint" semantic conventions. It represents a
-// fingerprint to track any eventual change in the Generative AI environment.
-func OpenAIResponseSystemFingerprint(val string) attribute.KeyValue {
- return OpenAIResponseSystemFingerprintKey.String(val)
-}
-
-// Enum values for openai.api.type
-var (
- // The OpenAI [Chat Completions API].
- // Stability: development
- //
- // [Chat Completions API]: https://developers.openai.com/api/reference/chat-completions/overview
- OpenAIAPITypeChatCompletions = OpenAIAPITypeKey.String("chat_completions")
- // The OpenAI [Responses API].
- // Stability: development
- //
- // [Responses API]: https://developers.openai.com/api/reference/responses/overview
- OpenAIAPITypeResponses = OpenAIAPITypeKey.String("responses")
-)
-
-// Enum values for openai.request.service_tier
-var (
- // The system will utilize scale tier credits until they are exhausted.
- // Stability: development
- OpenAIRequestServiceTierAuto = OpenAIRequestServiceTierKey.String("auto")
- // The system will utilize the default scale tier.
- // Stability: development
- OpenAIRequestServiceTierDefault = OpenAIRequestServiceTierKey.String("default")
-)
-
-// Namespace: openshift
-const (
- // OpenShiftClusterquotaNameKey is the attribute Key conforming to the
- // "openshift.clusterquota.name" semantic conventions. It represents the name of
- // the cluster quota.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "opentelemetry"
- OpenShiftClusterquotaNameKey = attribute.Key("openshift.clusterquota.name")
-
- // OpenShiftClusterquotaUIDKey is the attribute Key conforming to the
- // "openshift.clusterquota.uid" semantic conventions. It represents the UID of
- // the cluster quota.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
- OpenShiftClusterquotaUIDKey = attribute.Key("openshift.clusterquota.uid")
-)
-
-// OpenShiftClusterquotaName returns an attribute KeyValue conforming to the
-// "openshift.clusterquota.name" semantic conventions. It represents the name of
-// the cluster quota.
-func OpenShiftClusterquotaName(val string) attribute.KeyValue {
- return OpenShiftClusterquotaNameKey.String(val)
-}
-
-// OpenShiftClusterquotaUID returns an attribute KeyValue conforming to the
-// "openshift.clusterquota.uid" semantic conventions. It represents the UID of
-// the cluster quota.
-func OpenShiftClusterquotaUID(val string) attribute.KeyValue {
- return OpenShiftClusterquotaUIDKey.String(val)
-}
-
-// Namespace: opentracing
-const (
- // OpenTracingRefTypeKey is the attribute Key conforming to the
- // "opentracing.ref_type" semantic conventions. It represents the parent-child
- // Reference type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: The causal relationship between a child Span and a parent Span.
- OpenTracingRefTypeKey = attribute.Key("opentracing.ref_type")
-)
-
-// Enum values for opentracing.ref_type
-var (
- // The parent Span depends on the child Span in some capacity
- // Stability: development
- OpenTracingRefTypeChildOf = OpenTracingRefTypeKey.String("child_of")
- // The parent Span doesn't depend in any way on the result of the child Span
- // Stability: development
- OpenTracingRefTypeFollowsFrom = OpenTracingRefTypeKey.String("follows_from")
-)
-
-// Namespace: oracle
-const (
- // OracleDBDomainKey is the attribute Key conforming to the "oracle.db.domain"
- // semantic conventions. It represents the database domain associated with the
- // connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "example.com", "corp.internal", "prod.db.local"
- // Note: This attribute SHOULD be set to the value of the `DB_DOMAIN`
- // initialization parameter,
- // as exposed in `v$parameter`. `DB_DOMAIN` defines the domain portion of the
- // global
- // database name and SHOULD be configured when a database is, or may become,
- // part of a
- // distributed environment. Its value consists of one or more valid identifiers
- // (alphanumeric ASCII characters) separated by periods.
- OracleDBDomainKey = attribute.Key("oracle.db.domain")
-
- // OracleDBInstanceNameKey is the attribute Key conforming to the
- // "oracle.db.instance.name" semantic conventions. It represents the instance
- // name associated with the connection in an Oracle Real Application Clusters
- // environment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ORCL1", "ORCL2", "ORCL3"
- // Note: There can be multiple instances associated with a single database
- // service. It indicates the
- // unique instance name to which the connection is currently bound. For non-RAC
- // databases, this value
- // defaults to the `oracle.db.name`.
- OracleDBInstanceNameKey = attribute.Key("oracle.db.instance.name")
-
- // OracleDBNameKey is the attribute Key conforming to the "oracle.db.name"
- // semantic conventions. It represents the database name associated with the
- // connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ORCL1", "FREE"
- // Note: This attribute SHOULD be set to the value of the parameter `DB_NAME`
- // exposed in `v$parameter`.
- OracleDBNameKey = attribute.Key("oracle.db.name")
-
- // OracleDBPdbKey is the attribute Key conforming to the "oracle.db.pdb"
- // semantic conventions. It represents the pluggable database (PDB) name
- // associated with the connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "PDB1", "FREEPDB"
- // Note: This attribute SHOULD reflect the PDB that the session is currently
- // connected to.
- // If instrumentation cannot reliably obtain the active PDB name for each
- // operation
- // without issuing an additional query (such as `SELECT SYS_CONTEXT`), it is
- // RECOMMENDED to fall back to the PDB name specified at connection
- // establishment.
- OracleDBPdbKey = attribute.Key("oracle.db.pdb")
-
- // OracleDBServiceKey is the attribute Key conforming to the "oracle.db.service"
- // semantic conventions. It represents the service name currently associated
- // with the database connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "order-processing-service", "db_low.adb.oraclecloud.com",
- // "db_high.adb.oraclecloud.com"
- // Note: The effective service name for a connection can change during its
- // lifetime,
- // for example after executing sql, `ALTER SESSION`. If an instrumentation
- // cannot reliably
- // obtain the current service name for each operation without issuing an
- // additional
- // query (such as `SELECT SYS_CONTEXT`), it is RECOMMENDED to fall back to the
- // service name originally provided at connection establishment.
- OracleDBServiceKey = attribute.Key("oracle.db.service")
-)
-
-// OracleDBDomain returns an attribute KeyValue conforming to the
-// "oracle.db.domain" semantic conventions. It represents the database domain
-// associated with the connection.
-func OracleDBDomain(val string) attribute.KeyValue {
- return OracleDBDomainKey.String(val)
-}
-
-// OracleDBInstanceName returns an attribute KeyValue conforming to the
-// "oracle.db.instance.name" semantic conventions. It represents the instance
-// name associated with the connection in an Oracle Real Application Clusters
-// environment.
-func OracleDBInstanceName(val string) attribute.KeyValue {
- return OracleDBInstanceNameKey.String(val)
-}
-
-// OracleDBName returns an attribute KeyValue conforming to the "oracle.db.name"
-// semantic conventions. It represents the database name associated with the
-// connection.
-func OracleDBName(val string) attribute.KeyValue {
- return OracleDBNameKey.String(val)
-}
-
-// OracleDBPdb returns an attribute KeyValue conforming to the "oracle.db.pdb"
-// semantic conventions. It represents the pluggable database (PDB) name
-// associated with the connection.
-func OracleDBPdb(val string) attribute.KeyValue {
- return OracleDBPdbKey.String(val)
-}
-
-// OracleDBService returns an attribute KeyValue conforming to the
-// "oracle.db.service" semantic conventions. It represents the service name
-// currently associated with the database connection.
-func OracleDBService(val string) attribute.KeyValue {
- return OracleDBServiceKey.String(val)
-}
-
-// Namespace: oracle_cloud
-const (
- // OracleCloudRealmKey is the attribute Key conforming to the
- // "oracle_cloud.realm" semantic conventions. It represents the OCI realm
- // identifier that indicates the isolated partition in which the tenancy and its
- // resources reside.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "oc1", "oc2"
- // Note: See [OCI documentation on realms]
- //
- // [OCI documentation on realms]: https://docs.oracle.com/iaas/Content/General/Concepts/regions.htm
- OracleCloudRealmKey = attribute.Key("oracle_cloud.realm")
-)
-
-// OracleCloudRealm returns an attribute KeyValue conforming to the
-// "oracle_cloud.realm" semantic conventions. It represents the OCI realm
-// identifier that indicates the isolated partition in which the tenancy and its
-// resources reside.
-func OracleCloudRealm(val string) attribute.KeyValue {
- return OracleCloudRealmKey.String(val)
-}
-
-// Namespace: os
-const (
- // OSBuildIDKey is the attribute Key conforming to the "os.build_id" semantic
- // conventions. It represents the unique identifier for a particular build or
- // compilation of the operating system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TQ3C.230805.001.B2", "20E247", "22621"
- OSBuildIDKey = attribute.Key("os.build_id")
-
- // OSDescriptionKey is the attribute Key conforming to the "os.description"
- // semantic conventions. It represents the human readable (not intended to be
- // parsed) OS version information, like e.g. reported by `ver` or
- // `lsb_release -a` commands.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Microsoft Windows [Version 10.0.18363.778]", "Ubuntu 18.04.1 LTS"
- OSDescriptionKey = attribute.Key("os.description")
-
- // OSNameKey is the attribute Key conforming to the "os.name" semantic
- // conventions. It represents the human readable operating system name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iOS", "Android", "Ubuntu"
- OSNameKey = attribute.Key("os.name")
-
- // OSTypeKey is the attribute Key conforming to the "os.type" semantic
- // conventions. It represents the operating system type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OSTypeKey = attribute.Key("os.type")
-
- // OSVersionKey is the attribute Key conforming to the "os.version" semantic
- // conventions. It represents the version string of the operating system as
- // defined in [Version Attributes].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "14.2.1", "18.04.1"
- //
- // [Version Attributes]: /docs/resource/README.md#version-attributes
- OSVersionKey = attribute.Key("os.version")
-)
-
-// OSBuildID returns an attribute KeyValue conforming to the "os.build_id"
-// semantic conventions. It represents the unique identifier for a particular
-// build or compilation of the operating system.
-func OSBuildID(val string) attribute.KeyValue {
- return OSBuildIDKey.String(val)
-}
-
-// OSDescription returns an attribute KeyValue conforming to the "os.description"
-// semantic conventions. It represents the human readable (not intended to be
-// parsed) OS version information, like e.g. reported by `ver` or
-// `lsb_release -a` commands.
-func OSDescription(val string) attribute.KeyValue {
- return OSDescriptionKey.String(val)
-}
-
-// OSName returns an attribute KeyValue conforming to the "os.name" semantic
-// conventions. It represents the human readable operating system name.
-func OSName(val string) attribute.KeyValue {
- return OSNameKey.String(val)
-}
-
-// OSVersion returns an attribute KeyValue conforming to the "os.version"
-// semantic conventions. It represents the version string of the operating system
-// as defined in [Version Attributes].
-//
-// [Version Attributes]: /docs/resource/README.md#version-attributes
-func OSVersion(val string) attribute.KeyValue {
- return OSVersionKey.String(val)
-}
-
-// Enum values for os.type
-var (
- // Microsoft Windows
- // Stability: development
- OSTypeWindows = OSTypeKey.String("windows")
- // Linux
- // Stability: development
- OSTypeLinux = OSTypeKey.String("linux")
- // Apple Darwin
- // Stability: development
- OSTypeDarwin = OSTypeKey.String("darwin")
- // FreeBSD
- // Stability: development
- OSTypeFreeBSD = OSTypeKey.String("freebsd")
- // NetBSD
- // Stability: development
- OSTypeNetBSD = OSTypeKey.String("netbsd")
- // OpenBSD
- // Stability: development
- OSTypeOpenBSD = OSTypeKey.String("openbsd")
- // DragonFly BSD
- // Stability: development
- OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd")
- // HP-UX (Hewlett Packard Unix)
- // Stability: development
- OSTypeHPUX = OSTypeKey.String("hpux")
- // AIX (Advanced Interactive eXecutive)
- // Stability: development
- OSTypeAIX = OSTypeKey.String("aix")
- // SunOS, Oracle Solaris
- // Stability: development
- OSTypeSolaris = OSTypeKey.String("solaris")
- // IBM z/OS
- // Stability: development
- OSTypeZOS = OSTypeKey.String("zos")
-)
-
-// Namespace: otel
-const (
- // OTelComponentNameKey is the attribute Key conforming to the
- // "otel.component.name" semantic conventions. It represents a name uniquely
- // identifying the instance of the OpenTelemetry component within its containing
- // SDK instance.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otlp_grpc_span_exporter/0", "custom-name"
- // Note: Implementations SHOULD ensure a low cardinality for this attribute,
- // even across application or SDK restarts.
- // E.g. implementations MUST NOT use UUIDs as values for this attribute.
- //
- // Implementations MAY achieve these goals by following a
- // `/` pattern, e.g.
- // `batching_span_processor/0`.
- // Hereby `otel.component.type` refers to the corresponding attribute value of
- // the component.
- //
- // The value of `instance-counter` MAY be automatically assigned by the
- // component and uniqueness within the enclosing SDK instance MUST be
- // guaranteed.
- // For example, `` MAY be implemented by using a monotonically
- // increasing counter (starting with `0`), which is incremented every time an
- // instance of the given component type is started.
- //
- // With this implementation, for example the first Batching Span Processor would
- // have `batching_span_processor/0`
- // as `otel.component.name`, the second one `batching_span_processor/1` and so
- // on.
- // These values will therefore be reused in the case of an application restart.
- OTelComponentNameKey = attribute.Key("otel.component.name")
-
- // OTelComponentTypeKey is the attribute Key conforming to the
- // "otel.component.type" semantic conventions. It represents a name identifying
- // the type of the OpenTelemetry component.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "batching_span_processor", "com.example.MySpanExporter"
- // Note: If none of the standardized values apply, implementations SHOULD use
- // the language-defined name of the type.
- // E.g. for Java the fully qualified classname SHOULD be used in this case.
- OTelComponentTypeKey = attribute.Key("otel.component.type")
-
- // OTelEventNameKey is the attribute Key conforming to the "otel.event.name"
- // semantic conventions. It represents the identifies the class / type of event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "browser.mouse.click", "device.app.lifecycle"
- // Note: This attribute SHOULD be used by non-OTLP exporters when destination
- // does not support `EventName` or equivalent field. This attribute MAY be used
- // by applications using existing logging libraries so that it can be used to
- // set the `EventName` field by Collector or SDK components.
- OTelEventNameKey = attribute.Key("otel.event.name")
-
- // OTelScopeNameKey is the attribute Key conforming to the "otel.scope.name"
- // semantic conventions. It represents the name of the instrumentation scope - (
- // `InstrumentationScope.Name` in OTLP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "io.opentelemetry.contrib.mongodb"
- OTelScopeNameKey = attribute.Key("otel.scope.name")
-
- // OTelScopeSchemaURLKey is the attribute Key conforming to the
- // "otel.scope.schema_url" semantic conventions. It represents the schema URL of
- // the instrumentation scope.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://opentelemetry.io/schemas/1.31.0"
- OTelScopeSchemaURLKey = attribute.Key("otel.scope.schema_url")
-
- // OTelScopeVersionKey is the attribute Key conforming to the
- // "otel.scope.version" semantic conventions. It represents the version of the
- // instrumentation scope - (`InstrumentationScope.Version` in OTLP).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.0.0"
- OTelScopeVersionKey = attribute.Key("otel.scope.version")
-
- // OTelSpanParentOriginKey is the attribute Key conforming to the
- // "otel.span.parent.origin" semantic conventions. It represents the determines
- // whether the span has a parent span, and if so,
- // [whether it is a remote parent].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [whether it is a remote parent]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
- OTelSpanParentOriginKey = attribute.Key("otel.span.parent.origin")
-
- // OTelSpanSamplingResultKey is the attribute Key conforming to the
- // "otel.span.sampling_result" semantic conventions. It represents the result
- // value of the sampler for this span.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- OTelSpanSamplingResultKey = attribute.Key("otel.span.sampling_result")
-
- // OTelStatusCodeKey is the attribute Key conforming to the "otel.status_code"
- // semantic conventions. It represents the name of the code, either "OK" or
- // "ERROR". MUST NOT be set if the status code is UNSET.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples:
- OTelStatusCodeKey = attribute.Key("otel.status_code")
-
- // OTelStatusDescriptionKey is the attribute Key conforming to the
- // "otel.status_description" semantic conventions. It represents the description
- // of the Status if it has a value, otherwise not set.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "resource not found"
- OTelStatusDescriptionKey = attribute.Key("otel.status_description")
-)
-
-// OTelComponentName returns an attribute KeyValue conforming to the
-// "otel.component.name" semantic conventions. It represents a name uniquely
-// identifying the instance of the OpenTelemetry component within its containing
-// SDK instance.
-func OTelComponentName(val string) attribute.KeyValue {
- return OTelComponentNameKey.String(val)
-}
-
-// OTelEventName returns an attribute KeyValue conforming to the
-// "otel.event.name" semantic conventions. It represents the identifies the class
-// / type of event.
-func OTelEventName(val string) attribute.KeyValue {
- return OTelEventNameKey.String(val)
-}
-
-// OTelScopeName returns an attribute KeyValue conforming to the
-// "otel.scope.name" semantic conventions. It represents the name of the
-// instrumentation scope - (`InstrumentationScope.Name` in OTLP).
-func OTelScopeName(val string) attribute.KeyValue {
- return OTelScopeNameKey.String(val)
-}
-
-// OTelScopeSchemaURL returns an attribute KeyValue conforming to the
-// "otel.scope.schema_url" semantic conventions. It represents the schema URL of
-// the instrumentation scope.
-func OTelScopeSchemaURL(val string) attribute.KeyValue {
- return OTelScopeSchemaURLKey.String(val)
-}
-
-// OTelScopeVersion returns an attribute KeyValue conforming to the
-// "otel.scope.version" semantic conventions. It represents the version of the
-// instrumentation scope - (`InstrumentationScope.Version` in OTLP).
-func OTelScopeVersion(val string) attribute.KeyValue {
- return OTelScopeVersionKey.String(val)
-}
-
-// OTelStatusDescription returns an attribute KeyValue conforming to the
-// "otel.status_description" semantic conventions. It represents the description
-// of the Status if it has a value, otherwise not set.
-func OTelStatusDescription(val string) attribute.KeyValue {
- return OTelStatusDescriptionKey.String(val)
-}
-
-// Enum values for otel.component.type
-var (
- // The builtin SDK batching span processor
- //
- // Stability: development
- OTelComponentTypeBatchingSpanProcessor = OTelComponentTypeKey.String("batching_span_processor")
- // The builtin SDK simple span processor
- //
- // Stability: development
- OTelComponentTypeSimpleSpanProcessor = OTelComponentTypeKey.String("simple_span_processor")
- // The builtin SDK batching log record processor
- //
- // Stability: development
- OTelComponentTypeBatchingLogProcessor = OTelComponentTypeKey.String("batching_log_processor")
- // The builtin SDK simple log record processor
- //
- // Stability: development
- OTelComponentTypeSimpleLogProcessor = OTelComponentTypeKey.String("simple_log_processor")
- // OTLP span exporter over gRPC with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpGRPCSpanExporter = OTelComponentTypeKey.String("otlp_grpc_span_exporter")
- // OTLP span exporter over HTTP with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPSpanExporter = OTelComponentTypeKey.String("otlp_http_span_exporter")
- // OTLP span exporter over HTTP with JSON serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPJSONSpanExporter = OTelComponentTypeKey.String("otlp_http_json_span_exporter")
- // Zipkin span exporter over HTTP
- //
- // Stability: development
- OTelComponentTypeZipkinHTTPSpanExporter = OTelComponentTypeKey.String("zipkin_http_span_exporter")
- // OTLP log record exporter over gRPC with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpGRPCLogExporter = OTelComponentTypeKey.String("otlp_grpc_log_exporter")
- // OTLP log record exporter over HTTP with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPLogExporter = OTelComponentTypeKey.String("otlp_http_log_exporter")
- // OTLP log record exporter over HTTP with JSON serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPJSONLogExporter = OTelComponentTypeKey.String("otlp_http_json_log_exporter")
- // The builtin SDK periodically exporting metric reader
- //
- // Stability: development
- OTelComponentTypePeriodicMetricReader = OTelComponentTypeKey.String("periodic_metric_reader")
- // OTLP metric exporter over gRPC with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpGRPCMetricExporter = OTelComponentTypeKey.String("otlp_grpc_metric_exporter")
- // OTLP metric exporter over HTTP with protobuf serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPMetricExporter = OTelComponentTypeKey.String("otlp_http_metric_exporter")
- // OTLP metric exporter over HTTP with JSON serialization
- //
- // Stability: development
- OTelComponentTypeOtlpHTTPJSONMetricExporter = OTelComponentTypeKey.String("otlp_http_json_metric_exporter")
- // Prometheus metric exporter over HTTP with the default text-based format
- //
- // Stability: development
- OTelComponentTypePrometheusHTTPTextMetricExporter = OTelComponentTypeKey.String("prometheus_http_text_metric_exporter")
-)
-
-// Enum values for otel.span.parent.origin
-var (
- // The span does not have a parent, it is a root span
- // Stability: development
- OTelSpanParentOriginNone = OTelSpanParentOriginKey.String("none")
- // The span has a parent and the parent's span context [isRemote()] is false
- // Stability: development
- //
- // [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
- OTelSpanParentOriginLocal = OTelSpanParentOriginKey.String("local")
- // The span has a parent and the parent's span context [isRemote()] is true
- // Stability: development
- //
- // [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
- OTelSpanParentOriginRemote = OTelSpanParentOriginKey.String("remote")
-)
-
-// Enum values for otel.span.sampling_result
-var (
- // The span is not sampled and not recording
- // Stability: development
- OTelSpanSamplingResultDrop = OTelSpanSamplingResultKey.String("DROP")
- // The span is not sampled, but recording
- // Stability: development
- OTelSpanSamplingResultRecordOnly = OTelSpanSamplingResultKey.String("RECORD_ONLY")
- // The span is sampled and recording
- // Stability: development
- OTelSpanSamplingResultRecordAndSample = OTelSpanSamplingResultKey.String("RECORD_AND_SAMPLE")
-)
-
-// Enum values for otel.status_code
-var (
- // The operation has been validated by an Application developer or Operator to
- // have completed successfully.
- // Stability: stable
- OTelStatusCodeOk = OTelStatusCodeKey.String("OK")
- // The operation contains an error.
- // Stability: stable
- OTelStatusCodeError = OTelStatusCodeKey.String("ERROR")
-)
-
-// Namespace: pprof
-const (
- // PprofLocationIsFoldedKey is the attribute Key conforming to the
- // "pprof.location.is_folded" semantic conventions. It represents the provides
- // an indication that multiple symbols map to this location's address, for
- // example due to identical code folding by the linker. In that case the line
- // information represents one of the multiple symbols. This field must be
- // recomputed when the symbolization state of the profile changes.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- PprofLocationIsFoldedKey = attribute.Key("pprof.location.is_folded")
-
- // PprofMappingHasFilenamesKey is the attribute Key conforming to the
- // "pprof.mapping.has_filenames" semantic conventions. It represents the
- // indicates that there are filenames related to this mapping.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- PprofMappingHasFilenamesKey = attribute.Key("pprof.mapping.has_filenames")
-
- // PprofMappingHasFunctionsKey is the attribute Key conforming to the
- // "pprof.mapping.has_functions" semantic conventions. It represents the
- // indicates that there are functions related to this mapping.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- PprofMappingHasFunctionsKey = attribute.Key("pprof.mapping.has_functions")
-
- // PprofMappingHasInlineFramesKey is the attribute Key conforming to the
- // "pprof.mapping.has_inline_frames" semantic conventions. It represents the
- // indicates that there are inline frames related to this mapping.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- PprofMappingHasInlineFramesKey = attribute.Key("pprof.mapping.has_inline_frames")
-
- // PprofMappingHasLineNumbersKey is the attribute Key conforming to the
- // "pprof.mapping.has_line_numbers" semantic conventions. It represents the
- // indicates that there are line numbers related to this mapping.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- PprofMappingHasLineNumbersKey = attribute.Key("pprof.mapping.has_line_numbers")
-
- // PprofProfileCommentKey is the attribute Key conforming to the
- // "pprof.profile.comment" semantic conventions. It represents the free-form
- // text associated with the profile. This field should not be used to store any
- // machine-readable information, it is only for human-friendly content.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "hello world", "bazinga"
- PprofProfileCommentKey = attribute.Key("pprof.profile.comment")
-
- // PprofProfileDocURLKey is the attribute Key conforming to the
- // "pprof.profile.doc_url" semantic conventions. It represents the documentation
- // link for this profile type.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "http://pprof.example.com/cpu-profile.html"
- // Note: The URL must be absolute and may be missing if the profile was
- // generated by code that did not supply a link
- PprofProfileDocURLKey = attribute.Key("pprof.profile.doc_url")
-
- // PprofProfileDropFramesKey is the attribute Key conforming to the
- // "pprof.profile.drop_frames" semantic conventions. It represents the frames
- // with Function.function_name fully matching the regexp will be dropped from
- // the samples, along with their successors.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/foobar/"
- PprofProfileDropFramesKey = attribute.Key("pprof.profile.drop_frames")
-
- // PprofProfileKeepFramesKey is the attribute Key conforming to the
- // "pprof.profile.keep_frames" semantic conventions. It represents the frames
- // with Function.function_name fully matching the regexp will be kept, even if
- // it matches drop_frames.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/bazinga/"
- PprofProfileKeepFramesKey = attribute.Key("pprof.profile.keep_frames")
-
- // PprofScopeDefaultSampleTypeKey is the attribute Key conforming to the
- // "pprof.scope.default_sample_type" semantic conventions. It represents the
- // records the pprof's default_sample_type in the original profile. Not set if
- // the default sample type was missing.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cpu"
- // Note: This attribute, if present, MUST be set at the scope level
- // (resource_profiles[].scope_profiles[].scope.attributes[]).
- PprofScopeDefaultSampleTypeKey = attribute.Key("pprof.scope.default_sample_type")
-
- // PprofScopeSampleTypeOrderKey is the attribute Key conforming to the
- // "pprof.scope.sample_type_order" semantic conventions. It represents the
- // records the indexes of the sample types in the original profile.
- //
- // Type: int[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3, 0, 1, 2
- // Note: This attribute, if present, MUST be set at the scope level
- // (resource_profiles[].scope_profiles[].scope.attributes[]).
- PprofScopeSampleTypeOrderKey = attribute.Key("pprof.scope.sample_type_order")
-)
-
-// PprofLocationIsFolded returns an attribute KeyValue conforming to the
-// "pprof.location.is_folded" semantic conventions. It represents the provides an
-// indication that multiple symbols map to this location's address, for example
-// due to identical code folding by the linker. In that case the line information
-// represents one of the multiple symbols. This field must be recomputed when the
-// symbolization state of the profile changes.
-func PprofLocationIsFolded(val bool) attribute.KeyValue {
- return PprofLocationIsFoldedKey.Bool(val)
-}
-
-// PprofMappingHasFilenames returns an attribute KeyValue conforming to the
-// "pprof.mapping.has_filenames" semantic conventions. It represents the
-// indicates that there are filenames related to this mapping.
-func PprofMappingHasFilenames(val bool) attribute.KeyValue {
- return PprofMappingHasFilenamesKey.Bool(val)
-}
-
-// PprofMappingHasFunctions returns an attribute KeyValue conforming to the
-// "pprof.mapping.has_functions" semantic conventions. It represents the
-// indicates that there are functions related to this mapping.
-func PprofMappingHasFunctions(val bool) attribute.KeyValue {
- return PprofMappingHasFunctionsKey.Bool(val)
-}
-
-// PprofMappingHasInlineFrames returns an attribute KeyValue conforming to the
-// "pprof.mapping.has_inline_frames" semantic conventions. It represents the
-// indicates that there are inline frames related to this mapping.
-func PprofMappingHasInlineFrames(val bool) attribute.KeyValue {
- return PprofMappingHasInlineFramesKey.Bool(val)
-}
-
-// PprofMappingHasLineNumbers returns an attribute KeyValue conforming to the
-// "pprof.mapping.has_line_numbers" semantic conventions. It represents the
-// indicates that there are line numbers related to this mapping.
-func PprofMappingHasLineNumbers(val bool) attribute.KeyValue {
- return PprofMappingHasLineNumbersKey.Bool(val)
-}
-
-// PprofProfileComment returns an attribute KeyValue conforming to the
-// "pprof.profile.comment" semantic conventions. It represents the free-form text
-// associated with the profile. This field should not be used to store any
-// machine-readable information, it is only for human-friendly content.
-func PprofProfileComment(val ...string) attribute.KeyValue {
- return PprofProfileCommentKey.StringSlice(val)
-}
-
-// PprofProfileDocURL returns an attribute KeyValue conforming to the
-// "pprof.profile.doc_url" semantic conventions. It represents the documentation
-// link for this profile type.
-func PprofProfileDocURL(val string) attribute.KeyValue {
- return PprofProfileDocURLKey.String(val)
-}
-
-// PprofProfileDropFrames returns an attribute KeyValue conforming to the
-// "pprof.profile.drop_frames" semantic conventions. It represents the frames
-// with Function.function_name fully matching the regexp will be dropped from the
-// samples, along with their successors.
-func PprofProfileDropFrames(val string) attribute.KeyValue {
- return PprofProfileDropFramesKey.String(val)
-}
-
-// PprofProfileKeepFrames returns an attribute KeyValue conforming to the
-// "pprof.profile.keep_frames" semantic conventions. It represents the frames
-// with Function.function_name fully matching the regexp will be kept, even if it
-// matches drop_frames.
-func PprofProfileKeepFrames(val string) attribute.KeyValue {
- return PprofProfileKeepFramesKey.String(val)
-}
-
-// PprofScopeDefaultSampleType returns an attribute KeyValue conforming to the
-// "pprof.scope.default_sample_type" semantic conventions. It represents the
-// records the pprof's default_sample_type in the original profile. Not set if
-// the default sample type was missing.
-func PprofScopeDefaultSampleType(val string) attribute.KeyValue {
- return PprofScopeDefaultSampleTypeKey.String(val)
-}
-
-// PprofScopeSampleTypeOrder returns an attribute KeyValue conforming to the
-// "pprof.scope.sample_type_order" semantic conventions. It represents the
-// records the indexes of the sample types in the original profile.
-func PprofScopeSampleTypeOrder(val ...int) attribute.KeyValue {
- return PprofScopeSampleTypeOrderKey.IntSlice(val)
-}
-
-// Namespace: process
-const (
- // ProcessArgsCountKey is the attribute Key conforming to the
- // "process.args_count" semantic conventions. It represents the length of the
- // process.command_args array.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 4
- // Note: This field can be useful for querying or performing bucket analysis on
- // how many arguments were provided to start a process. More arguments may be an
- // indication of suspicious activity.
- ProcessArgsCountKey = attribute.Key("process.args_count")
-
- // ProcessCommandKey is the attribute Key conforming to the "process.command"
- // semantic conventions. It represents the command used to launch the process
- // (i.e. the command name). On Linux based systems, can be set to the zeroth
- // string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter
- // extracted from `GetCommandLineW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cmd/otelcol"
- ProcessCommandKey = attribute.Key("process.command")
-
- // ProcessCommandArgsKey is the attribute Key conforming to the
- // "process.command_args" semantic conventions. It represents the all the
- // command arguments (including the command/executable itself) as received by
- // the process. On Linux-based systems (and some other Unixoid systems
- // supporting procfs), can be set according to the list of null-delimited
- // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this
- // would be the full argv vector passed to `main`. SHOULD NOT be collected by
- // default unless there is sanitization that excludes sensitive data.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cmd/otecol", "--config=config.yaml"
- ProcessCommandArgsKey = attribute.Key("process.command_args")
-
- // ProcessCommandLineKey is the attribute Key conforming to the
- // "process.command_line" semantic conventions. It represents the full command
- // used to launch the process as a single string representing the full command.
- // On Windows, can be set to the result of `GetCommandLineW`. Do not set this if
- // you have to assemble it just for monitoring; use `process.command_args`
- // instead. SHOULD NOT be collected by default unless there is sanitization that
- // excludes sensitive data.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "C:\cmd\otecol --config="my directory\config.yaml""
- ProcessCommandLineKey = attribute.Key("process.command_line")
-
- // ProcessContextSwitchTypeKey is the attribute Key conforming to the
- // "process.context_switch.type" semantic conventions. It represents the
- // specifies whether the context switches for this data point were voluntary or
- // involuntary.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- ProcessContextSwitchTypeKey = attribute.Key("process.context_switch.type")
-
- // ProcessCreationTimeKey is the attribute Key conforming to the
- // "process.creation.time" semantic conventions. It represents the date and time
- // the process was created, in ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2023-11-21T09:25:34.853Z"
- ProcessCreationTimeKey = attribute.Key("process.creation.time")
-
- // ProcessExecutableBuildIDGNUKey is the attribute Key conforming to the
- // "process.executable.build_id.gnu" semantic conventions. It represents the GNU
- // build ID as found in the `.note.gnu.build-id` ELF section (hex string).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "c89b11207f6479603b0d49bf291c092c2b719293"
- ProcessExecutableBuildIDGNUKey = attribute.Key("process.executable.build_id.gnu")
-
- // ProcessExecutableBuildIDGoKey is the attribute Key conforming to the
- // "process.executable.build_id.go" semantic conventions. It represents the Go
- // build ID as retrieved by `go tool buildid `.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY"
- ProcessExecutableBuildIDGoKey = attribute.Key("process.executable.build_id.go")
-
- // ProcessExecutableBuildIDHtlhashKey is the attribute Key conforming to the
- // "process.executable.build_id.htlhash" semantic conventions. It represents the
- // deterministic build ID for executables.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "600DCAFE4A110000F2BF38C493F5FB92"
- // Note: GNU and Go build IDs may be stripped or unavailable in some
- // environments
- // (e.g., Alpine Linux, Docker images). This attribute provides a deterministic
- // build ID computed by hashing the first and last 4096 bytes of the file
- // along with its length:
- //
- // ```
- // Input β Concat(File[:4096], File[-4096:], BigEndianUInt64(Len(File)))
- // Digest β SHA256(Input)
- // BuildID β Digest[:16]
- // ```
- //
- // The result is the first 16 bytes (128 bits) of the SHA256 digest,
- // represented as a hex string.
- ProcessExecutableBuildIDHtlhashKey = attribute.Key("process.executable.build_id.htlhash")
-
- // ProcessExecutableNameKey is the attribute Key conforming to the
- // "process.executable.name" semantic conventions. It represents the name of the
- // process executable. On Linux based systems, this SHOULD be set to the base
- // name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to
- // the base name of `GetProcessImageFileNameW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "otelcol"
- ProcessExecutableNameKey = attribute.Key("process.executable.name")
-
- // ProcessExecutablePathKey is the attribute Key conforming to the
- // "process.executable.path" semantic conventions. It represents the full path
- // to the process executable. On Linux based systems, can be set to the target
- // of `proc/[pid]/exe`. On Windows, can be set to the result of
- // `GetProcessImageFileNameW`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/usr/bin/cmd/otelcol"
- ProcessExecutablePathKey = attribute.Key("process.executable.path")
-
- // ProcessExitCodeKey is the attribute Key conforming to the "process.exit.code"
- // semantic conventions. It represents the exit code of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 127
- ProcessExitCodeKey = attribute.Key("process.exit.code")
-
- // ProcessExitTimeKey is the attribute Key conforming to the "process.exit.time"
- // semantic conventions. It represents the date and time the process exited, in
- // ISO 8601 format.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2023-11-21T09:26:12.315Z"
- ProcessExitTimeKey = attribute.Key("process.exit.time")
-
- // ProcessGroupLeaderPIDKey is the attribute Key conforming to the
- // "process.group_leader.pid" semantic conventions. It represents the PID of the
- // process's group leader. This is also the process group ID (PGID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 23
- ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid")
-
- // ProcessInteractiveKey is the attribute Key conforming to the
- // "process.interactive" semantic conventions. It represents the whether the
- // process is connected to an interactive shell.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- ProcessInteractiveKey = attribute.Key("process.interactive")
-
- // ProcessLinuxCgroupKey is the attribute Key conforming to the
- // "process.linux.cgroup" semantic conventions. It represents the control group
- // associated with the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1:name=systemd:/user.slice/user-1000.slice/session-3.scope",
- // "0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope"
- // Note: Control groups (cgroups) are a kernel feature used to organize and
- // manage process resources. This attribute provides the path(s) to the
- // cgroup(s) associated with the process, which should match the contents of the
- // [/proc/[PID]/cgroup] file.
- //
- // [/proc/[PID]/cgroup]: https://man7.org/linux/man-pages/man7/cgroups.7.html
- ProcessLinuxCgroupKey = attribute.Key("process.linux.cgroup")
-
- // ProcessOwnerKey is the attribute Key conforming to the "process.owner"
- // semantic conventions. It represents the username of the user that owns the
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- ProcessOwnerKey = attribute.Key("process.owner")
-
- // ProcessParentPIDKey is the attribute Key conforming to the
- // "process.parent_pid" semantic conventions. It represents the parent Process
- // identifier (PPID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 111
- ProcessParentPIDKey = attribute.Key("process.parent_pid")
-
- // ProcessPIDKey is the attribute Key conforming to the "process.pid" semantic
- // conventions. It represents the process identifier (PID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1234
- ProcessPIDKey = attribute.Key("process.pid")
-
- // ProcessRealUserIDKey is the attribute Key conforming to the
- // "process.real_user.id" semantic conventions. It represents the real user ID
- // (RUID) of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1000
- ProcessRealUserIDKey = attribute.Key("process.real_user.id")
-
- // ProcessRealUserNameKey is the attribute Key conforming to the
- // "process.real_user.name" semantic conventions. It represents the username of
- // the real user of the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "operator"
- ProcessRealUserNameKey = attribute.Key("process.real_user.name")
-
- // ProcessRuntimeDescriptionKey is the attribute Key conforming to the
- // "process.runtime.description" semantic conventions. It represents an
- // additional description about the runtime of the process, for example a
- // specific vendor customization of the runtime environment.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0
- ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description")
-
- // ProcessRuntimeNameKey is the attribute Key conforming to the
- // "process.runtime.name" semantic conventions. It represents the name of the
- // runtime of this process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "OpenJDK Runtime Environment"
- ProcessRuntimeNameKey = attribute.Key("process.runtime.name")
-
- // ProcessRuntimeVersionKey is the attribute Key conforming to the
- // "process.runtime.version" semantic conventions. It represents the version of
- // the runtime of this process, as returned by the runtime without modification.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 14.0.2
- ProcessRuntimeVersionKey = attribute.Key("process.runtime.version")
-
- // ProcessSavedUserIDKey is the attribute Key conforming to the
- // "process.saved_user.id" semantic conventions. It represents the saved user ID
- // (SUID) of the process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1002
- ProcessSavedUserIDKey = attribute.Key("process.saved_user.id")
-
- // ProcessSavedUserNameKey is the attribute Key conforming to the
- // "process.saved_user.name" semantic conventions. It represents the username of
- // the saved user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "operator"
- ProcessSavedUserNameKey = attribute.Key("process.saved_user.name")
-
- // ProcessSessionLeaderPIDKey is the attribute Key conforming to the
- // "process.session_leader.pid" semantic conventions. It represents the PID of
- // the process's session leader. This is also the session ID (SID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 14
- ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid")
-
- // ProcessStateKey is the attribute Key conforming to the "process.state"
- // semantic conventions. It represents the process state, e.g.,
- // [Linux Process State Codes].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "running"
- //
- // [Linux Process State Codes]: https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES
- ProcessStateKey = attribute.Key("process.state")
-
- // ProcessTitleKey is the attribute Key conforming to the "process.title"
- // semantic conventions. It represents the process title (proctitle).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cat /etc/hostname", "xfce4-session", "bash"
- // Note: In many Unix-like systems, process title (proctitle), is the string
- // that represents the name or command line of a running process, displayed by
- // system monitoring tools like ps, top, and htop.
- ProcessTitleKey = attribute.Key("process.title")
-
- // ProcessUserIDKey is the attribute Key conforming to the "process.user.id"
- // semantic conventions. It represents the effective user ID (EUID) of the
- // process.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 1001
- ProcessUserIDKey = attribute.Key("process.user.id")
-
- // ProcessUserNameKey is the attribute Key conforming to the "process.user.name"
- // semantic conventions. It represents the username of the effective user of the
- // process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "root"
- ProcessUserNameKey = attribute.Key("process.user.name")
-
- // ProcessVpidKey is the attribute Key conforming to the "process.vpid" semantic
- // conventions. It represents the virtual process identifier.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 12
- // Note: The process ID within a PID namespace. This is not necessarily unique
- // across all processes on the host but it is unique within the process
- // namespace that the process exists within.
- ProcessVpidKey = attribute.Key("process.vpid")
-
- // ProcessWorkingDirectoryKey is the attribute Key conforming to the
- // "process.working_directory" semantic conventions. It represents the working
- // directory of the process.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/root"
- ProcessWorkingDirectoryKey = attribute.Key("process.working_directory")
-)
-
-// ProcessArgsCount returns an attribute KeyValue conforming to the
-// "process.args_count" semantic conventions. It represents the length of the
-// process.command_args array.
-func ProcessArgsCount(val int) attribute.KeyValue {
- return ProcessArgsCountKey.Int(val)
-}
-
-// ProcessCommand returns an attribute KeyValue conforming to the
-// "process.command" semantic conventions. It represents the command used to
-// launch the process (i.e. the command name). On Linux based systems, can be set
-// to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the
-// first parameter extracted from `GetCommandLineW`.
-func ProcessCommand(val string) attribute.KeyValue {
- return ProcessCommandKey.String(val)
-}
-
-// ProcessCommandArgs returns an attribute KeyValue conforming to the
-// "process.command_args" semantic conventions. It represents the all the command
-// arguments (including the command/executable itself) as received by the
-// process. On Linux-based systems (and some other Unixoid systems supporting
-// procfs), can be set according to the list of null-delimited strings extracted
-// from `proc/[pid]/cmdline`. For libc-based executables, this would be the full
-// argv vector passed to `main`. SHOULD NOT be collected by default unless there
-// is sanitization that excludes sensitive data.
-func ProcessCommandArgs(val ...string) attribute.KeyValue {
- return ProcessCommandArgsKey.StringSlice(val)
-}
-
-// ProcessCommandLine returns an attribute KeyValue conforming to the
-// "process.command_line" semantic conventions. It represents the full command
-// used to launch the process as a single string representing the full command.
-// On Windows, can be set to the result of `GetCommandLineW`. Do not set this if
-// you have to assemble it just for monitoring; use `process.command_args`
-// instead. SHOULD NOT be collected by default unless there is sanitization that
-// excludes sensitive data.
-func ProcessCommandLine(val string) attribute.KeyValue {
- return ProcessCommandLineKey.String(val)
-}
-
-// ProcessCreationTime returns an attribute KeyValue conforming to the
-// "process.creation.time" semantic conventions. It represents the date and time
-// the process was created, in ISO 8601 format.
-func ProcessCreationTime(val string) attribute.KeyValue {
- return ProcessCreationTimeKey.String(val)
-}
-
-// ProcessEnvironmentVariable returns an attribute KeyValue conforming to the
-// "process.environment_variable" semantic conventions. It represents the process
-// environment variables, `` being the environment variable name, the value
-// being the environment variable value.
-func ProcessEnvironmentVariable(key string, val string) attribute.KeyValue {
- return attribute.String("process.environment_variable."+key, val)
-}
-
-// ProcessExecutableBuildIDGNU returns an attribute KeyValue conforming to the
-// "process.executable.build_id.gnu" semantic conventions. It represents the GNU
-// build ID as found in the `.note.gnu.build-id` ELF section (hex string).
-func ProcessExecutableBuildIDGNU(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDGNUKey.String(val)
-}
-
-// ProcessExecutableBuildIDGo returns an attribute KeyValue conforming to the
-// "process.executable.build_id.go" semantic conventions. It represents the Go
-// build ID as retrieved by `go tool buildid `.
-func ProcessExecutableBuildIDGo(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDGoKey.String(val)
-}
-
-// ProcessExecutableBuildIDHtlhash returns an attribute KeyValue conforming to
-// the "process.executable.build_id.htlhash" semantic conventions. It represents
-// the deterministic build ID for executables.
-func ProcessExecutableBuildIDHtlhash(val string) attribute.KeyValue {
- return ProcessExecutableBuildIDHtlhashKey.String(val)
-}
-
-// ProcessExecutableName returns an attribute KeyValue conforming to the
-// "process.executable.name" semantic conventions. It represents the name of the
-// process executable. On Linux based systems, this SHOULD be set to the base
-// name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to the
-// base name of `GetProcessImageFileNameW`.
-func ProcessExecutableName(val string) attribute.KeyValue {
- return ProcessExecutableNameKey.String(val)
-}
-
-// ProcessExecutablePath returns an attribute KeyValue conforming to the
-// "process.executable.path" semantic conventions. It represents the full path to
-// the process executable. On Linux based systems, can be set to the target of
-// `proc/[pid]/exe`. On Windows, can be set to the result of
-// `GetProcessImageFileNameW`.
-func ProcessExecutablePath(val string) attribute.KeyValue {
- return ProcessExecutablePathKey.String(val)
-}
-
-// ProcessExitCode returns an attribute KeyValue conforming to the
-// "process.exit.code" semantic conventions. It represents the exit code of the
-// process.
-func ProcessExitCode(val int) attribute.KeyValue {
- return ProcessExitCodeKey.Int(val)
-}
-
-// ProcessExitTime returns an attribute KeyValue conforming to the
-// "process.exit.time" semantic conventions. It represents the date and time the
-// process exited, in ISO 8601 format.
-func ProcessExitTime(val string) attribute.KeyValue {
- return ProcessExitTimeKey.String(val)
-}
-
-// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the
-// "process.group_leader.pid" semantic conventions. It represents the PID of the
-// process's group leader. This is also the process group ID (PGID) of the
-// process.
-func ProcessGroupLeaderPID(val int) attribute.KeyValue {
- return ProcessGroupLeaderPIDKey.Int(val)
-}
-
-// ProcessInteractive returns an attribute KeyValue conforming to the
-// "process.interactive" semantic conventions. It represents the whether the
-// process is connected to an interactive shell.
-func ProcessInteractive(val bool) attribute.KeyValue {
- return ProcessInteractiveKey.Bool(val)
-}
-
-// ProcessLinuxCgroup returns an attribute KeyValue conforming to the
-// "process.linux.cgroup" semantic conventions. It represents the control group
-// associated with the process.
-func ProcessLinuxCgroup(val string) attribute.KeyValue {
- return ProcessLinuxCgroupKey.String(val)
-}
-
-// ProcessOwner returns an attribute KeyValue conforming to the "process.owner"
-// semantic conventions. It represents the username of the user that owns the
-// process.
-func ProcessOwner(val string) attribute.KeyValue {
- return ProcessOwnerKey.String(val)
-}
-
-// ProcessParentPID returns an attribute KeyValue conforming to the
-// "process.parent_pid" semantic conventions. It represents the parent Process
-// identifier (PPID).
-func ProcessParentPID(val int) attribute.KeyValue {
- return ProcessParentPIDKey.Int(val)
-}
-
-// ProcessPID returns an attribute KeyValue conforming to the "process.pid"
-// semantic conventions. It represents the process identifier (PID).
-func ProcessPID(val int) attribute.KeyValue {
- return ProcessPIDKey.Int(val)
-}
-
-// ProcessRealUserID returns an attribute KeyValue conforming to the
-// "process.real_user.id" semantic conventions. It represents the real user ID
-// (RUID) of the process.
-func ProcessRealUserID(val int) attribute.KeyValue {
- return ProcessRealUserIDKey.Int(val)
-}
-
-// ProcessRealUserName returns an attribute KeyValue conforming to the
-// "process.real_user.name" semantic conventions. It represents the username of
-// the real user of the process.
-func ProcessRealUserName(val string) attribute.KeyValue {
- return ProcessRealUserNameKey.String(val)
-}
-
-// ProcessRuntimeDescription returns an attribute KeyValue conforming to the
-// "process.runtime.description" semantic conventions. It represents an
-// additional description about the runtime of the process, for example a
-// specific vendor customization of the runtime environment.
-func ProcessRuntimeDescription(val string) attribute.KeyValue {
- return ProcessRuntimeDescriptionKey.String(val)
-}
-
-// ProcessRuntimeName returns an attribute KeyValue conforming to the
-// "process.runtime.name" semantic conventions. It represents the name of the
-// runtime of this process.
-func ProcessRuntimeName(val string) attribute.KeyValue {
- return ProcessRuntimeNameKey.String(val)
-}
-
-// ProcessRuntimeVersion returns an attribute KeyValue conforming to the
-// "process.runtime.version" semantic conventions. It represents the version of
-// the runtime of this process, as returned by the runtime without modification.
-func ProcessRuntimeVersion(val string) attribute.KeyValue {
- return ProcessRuntimeVersionKey.String(val)
-}
-
-// ProcessSavedUserID returns an attribute KeyValue conforming to the
-// "process.saved_user.id" semantic conventions. It represents the saved user ID
-// (SUID) of the process.
-func ProcessSavedUserID(val int) attribute.KeyValue {
- return ProcessSavedUserIDKey.Int(val)
-}
-
-// ProcessSavedUserName returns an attribute KeyValue conforming to the
-// "process.saved_user.name" semantic conventions. It represents the username of
-// the saved user.
-func ProcessSavedUserName(val string) attribute.KeyValue {
- return ProcessSavedUserNameKey.String(val)
-}
-
-// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the
-// "process.session_leader.pid" semantic conventions. It represents the PID of
-// the process's session leader. This is also the session ID (SID) of the
-// process.
-func ProcessSessionLeaderPID(val int) attribute.KeyValue {
- return ProcessSessionLeaderPIDKey.Int(val)
-}
-
-// ProcessTitle returns an attribute KeyValue conforming to the "process.title"
-// semantic conventions. It represents the process title (proctitle).
-func ProcessTitle(val string) attribute.KeyValue {
- return ProcessTitleKey.String(val)
-}
-
-// ProcessUserID returns an attribute KeyValue conforming to the
-// "process.user.id" semantic conventions. It represents the effective user ID
-// (EUID) of the process.
-func ProcessUserID(val int) attribute.KeyValue {
- return ProcessUserIDKey.Int(val)
-}
-
-// ProcessUserName returns an attribute KeyValue conforming to the
-// "process.user.name" semantic conventions. It represents the username of the
-// effective user of the process.
-func ProcessUserName(val string) attribute.KeyValue {
- return ProcessUserNameKey.String(val)
-}
-
-// ProcessVpid returns an attribute KeyValue conforming to the "process.vpid"
-// semantic conventions. It represents the virtual process identifier.
-func ProcessVpid(val int) attribute.KeyValue {
- return ProcessVpidKey.Int(val)
-}
-
-// ProcessWorkingDirectory returns an attribute KeyValue conforming to the
-// "process.working_directory" semantic conventions. It represents the working
-// directory of the process.
-func ProcessWorkingDirectory(val string) attribute.KeyValue {
- return ProcessWorkingDirectoryKey.String(val)
-}
-
-// Enum values for process.context_switch.type
-var (
- // voluntary
- // Stability: development
- ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary")
- // involuntary
- // Stability: development
- ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary")
-)
-
-// Enum values for process.state
-var (
- // running
- // Stability: development
- ProcessStateRunning = ProcessStateKey.String("running")
- // sleeping
- // Stability: development
- ProcessStateSleeping = ProcessStateKey.String("sleeping")
- // stopped
- // Stability: development
- ProcessStateStopped = ProcessStateKey.String("stopped")
- // defunct
- // Stability: development
- ProcessStateDefunct = ProcessStateKey.String("defunct")
-)
-
-// Namespace: profile
-const (
- // ProfileFrameTypeKey is the attribute Key conforming to the
- // "profile.frame.type" semantic conventions. It represents the describes the
- // interpreter or compiler of a single frame.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "cpython"
- ProfileFrameTypeKey = attribute.Key("profile.frame.type")
-)
-
-// Enum values for profile.frame.type
-var (
- // [.NET]
- //
- // Stability: development
- //
- // [.NET]: https://wikipedia.org/wiki/.NET
- ProfileFrameTypeDotnet = ProfileFrameTypeKey.String("dotnet")
- // [JVM]
- //
- // Stability: development
- //
- // [JVM]: https://wikipedia.org/wiki/Java_virtual_machine
- ProfileFrameTypeJVM = ProfileFrameTypeKey.String("jvm")
- // [Kernel]
- //
- // Stability: development
- //
- // [Kernel]: https://wikipedia.org/wiki/Kernel_(operating_system)
- ProfileFrameTypeKernel = ProfileFrameTypeKey.String("kernel")
- // Can be one of but not limited to [C], [C++], [Go] or [Rust]. If possible, a
- // more precise value MUST be used.
- //
- // Stability: development
- //
- // [C]: https://wikipedia.org/wiki/C_(programming_language)
- // [C++]: https://wikipedia.org/wiki/C%2B%2B
- // [Go]: https://wikipedia.org/wiki/Go_(programming_language)
- // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language)
- ProfileFrameTypeNative = ProfileFrameTypeKey.String("native")
- // [Perl]
- //
- // Stability: development
- //
- // [Perl]: https://wikipedia.org/wiki/Perl
- ProfileFrameTypePerl = ProfileFrameTypeKey.String("perl")
- // [PHP]
- //
- // Stability: development
- //
- // [PHP]: https://wikipedia.org/wiki/PHP
- ProfileFrameTypePHP = ProfileFrameTypeKey.String("php")
- // [Python]
- //
- // Stability: development
- //
- // [Python]: https://wikipedia.org/wiki/Python_(programming_language)
- ProfileFrameTypeCpython = ProfileFrameTypeKey.String("cpython")
- // [Ruby]
- //
- // Stability: development
- //
- // [Ruby]: https://wikipedia.org/wiki/Ruby_(programming_language)
- ProfileFrameTypeRuby = ProfileFrameTypeKey.String("ruby")
- // [V8JS]
- //
- // Stability: development
- //
- // [V8JS]: https://wikipedia.org/wiki/V8_(JavaScript_engine)
- ProfileFrameTypeV8JS = ProfileFrameTypeKey.String("v8js")
- // [Erlang]
- //
- // Stability: development
- //
- // [Erlang]: https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine)
- ProfileFrameTypeBeam = ProfileFrameTypeKey.String("beam")
- // [Go],
- //
- // Stability: development
- //
- // [Go]: https://wikipedia.org/wiki/Go_(programming_language)
- ProfileFrameTypeGo = ProfileFrameTypeKey.String("go")
- // [Rust]
- //
- // Stability: development
- //
- // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language)
- ProfileFrameTypeRust = ProfileFrameTypeKey.String("rust")
-)
-
-// Namespace: rpc
-const (
- // RPCMethodKey is the attribute Key conforming to the "rpc.method" semantic
- // conventions. It represents the fully-qualified logical name of the method
- // from the RPC interface perspective.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "com.example.ExampleService/exampleMethod", "EchoService/Echo",
- // "_OTHER"
- // Note: The method name MAY have unbounded cardinality in edge or error cases.
- //
- // Some RPC frameworks or libraries provide a fixed set of recognized methods
- // for client stubs and server implementations. Instrumentations for such
- // frameworks MUST set this attribute to the original method name only
- // when the method is recognized by the framework or library.
- //
- // When the method is not recognized, for example, when the server receives
- // a request for a method that is not predefined on the server, or when
- // instrumentation is not able to reliably detect if the method is predefined,
- // the attribute MUST be set to `_OTHER`. In such cases, tracing
- // instrumentations MUST also set `rpc.method_original` attribute to
- // the original method value.
- //
- // If the RPC instrumentation could end up converting valid RPC methods to
- // `_OTHER`, then it SHOULD provide a way to configure the list of recognized
- // RPC methods.
- //
- // The `rpc.method` can be different from the name of any implementing
- // method/function.
- // The `code.function.name` attribute may be used to record the fully-qualified
- // method actually executing the call on the server side, or the
- // RPC client stub method on the client side.
- RPCMethodKey = attribute.Key("rpc.method")
-
- // RPCMethodOriginalKey is the attribute Key conforming to the
- // "rpc.method_original" semantic conventions. It represents the original name
- // of the method used by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "com.myservice.EchoService/catchAll",
- // "com.myservice.EchoService/unknownMethod", "InvalidMethod"
- RPCMethodOriginalKey = attribute.Key("rpc.method_original")
-
- // RPCResponseStatusCodeKey is the attribute Key conforming to the
- // "rpc.response.status_code" semantic conventions. It represents the status
- // code of the RPC returned by the RPC server or generated by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples: "OK", "DEADLINE_EXCEEDED", "-32602"
- // Note: Usually it represents an error code, but may also represent partial
- // success, warning, or differentiate between various types of successful
- // outcomes.
- // Semantic conventions for individual RPC frameworks SHOULD document what
- // `rpc.response.status_code` means in the context of that system and which
- // values are considered to represent errors.
- RPCResponseStatusCodeKey = attribute.Key("rpc.response.status_code")
-
- // RPCSystemNameKey is the attribute Key conforming to the "rpc.system.name"
- // semantic conventions. It represents the Remote Procedure Call (RPC) system.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Release_Candidate
- //
- // Examples:
- // Note: The client and server RPC systems may differ for the same RPC
- // interaction. For example, a client may use Apache Dubbo or Connect RPC to
- // communicate with a server that uses gRPC since both protocols provide
- // compatibility with gRPC.
- RPCSystemNameKey = attribute.Key("rpc.system.name")
-)
-
-// RPCMethod returns an attribute KeyValue conforming to the "rpc.method"
-// semantic conventions. It represents the fully-qualified logical name of the
-// method from the RPC interface perspective.
-func RPCMethod(val string) attribute.KeyValue {
- return RPCMethodKey.String(val)
-}
-
-// RPCMethodOriginal returns an attribute KeyValue conforming to the
-// "rpc.method_original" semantic conventions. It represents the original name of
-// the method used by the client.
-func RPCMethodOriginal(val string) attribute.KeyValue {
- return RPCMethodOriginalKey.String(val)
-}
-
-// RPCRequestMetadata returns an attribute KeyValue conforming to the
-// "rpc.request.metadata" semantic conventions. It represents the RPC request
-// metadata, `` being the normalized RPC metadata key (lowercase), the value
-// being the metadata values.
-func RPCRequestMetadata(key string, val ...string) attribute.KeyValue {
- return attribute.StringSlice("rpc.request.metadata."+key, val)
-}
-
-// RPCResponseMetadata returns an attribute KeyValue conforming to the
-// "rpc.response.metadata" semantic conventions. It represents the RPC response
-// metadata, `` being the normalized RPC metadata key (lowercase), the value
-// being the metadata values.
-func RPCResponseMetadata(key string, val ...string) attribute.KeyValue {
- return attribute.StringSlice("rpc.response.metadata."+key, val)
-}
-
-// RPCResponseStatusCode returns an attribute KeyValue conforming to the
-// "rpc.response.status_code" semantic conventions. It represents the status code
-// of the RPC returned by the RPC server or generated by the client.
-func RPCResponseStatusCode(val string) attribute.KeyValue {
- return RPCResponseStatusCodeKey.String(val)
-}
-
-// Enum values for rpc.system.name
-var (
- // [gRPC]
- // Stability: release_candidate
- //
- // [gRPC]: https://grpc.io/
- RPCSystemNameGRPC = RPCSystemNameKey.String("grpc")
- // [Apache Dubbo]
- // Stability: release_candidate
- //
- // [Apache Dubbo]: https://dubbo.apache.org/
- RPCSystemNameDubbo = RPCSystemNameKey.String("dubbo")
- // [Connect RPC]
- // Stability: development
- //
- // [Connect RPC]: https://connectrpc.com/
- RPCSystemNameConnectrpc = RPCSystemNameKey.String("connectrpc")
- // [JSON-RPC]
- // Stability: development
- //
- // [JSON-RPC]: https://www.jsonrpc.org/
- RPCSystemNameJSONRPC = RPCSystemNameKey.String("jsonrpc")
-)
-
-// Namespace: security_rule
-const (
- // SecurityRuleCategoryKey is the attribute Key conforming to the
- // "security_rule.category" semantic conventions. It represents a categorization
- // value keyword used by the entity using the rule for detection of this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Attempted Information Leak"
- SecurityRuleCategoryKey = attribute.Key("security_rule.category")
-
- // SecurityRuleDescriptionKey is the attribute Key conforming to the
- // "security_rule.description" semantic conventions. It represents the
- // description of the rule generating the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Block requests to public DNS over HTTPS / TLS protocols"
- SecurityRuleDescriptionKey = attribute.Key("security_rule.description")
-
- // SecurityRuleLicenseKey is the attribute Key conforming to the
- // "security_rule.license" semantic conventions. It represents the name of the
- // license under which the rule used to generate this event is made available.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Apache 2.0"
- SecurityRuleLicenseKey = attribute.Key("security_rule.license")
-
- // SecurityRuleNameKey is the attribute Key conforming to the
- // "security_rule.name" semantic conventions. It represents the name of the rule
- // or signature generating the event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "BLOCK_DNS_over_TLS"
- SecurityRuleNameKey = attribute.Key("security_rule.name")
-
- // SecurityRuleReferenceKey is the attribute Key conforming to the
- // "security_rule.reference" semantic conventions. It represents the reference
- // URL to additional information about the rule used to generate this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://en.wikipedia.org/wiki/DNS_over_TLS"
- // Note: The URL can point to the vendorβs documentation about the rule. If
- // thatβs not available, it can also be a link to a more general page
- // describing this type of alert.
- SecurityRuleReferenceKey = attribute.Key("security_rule.reference")
-
- // SecurityRuleRulesetNameKey is the attribute Key conforming to the
- // "security_rule.ruleset.name" semantic conventions. It represents the name of
- // the ruleset, policy, group, or parent category in which the rule used to
- // generate this event is a member.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Standard_Protocol_Filters"
- SecurityRuleRulesetNameKey = attribute.Key("security_rule.ruleset.name")
-
- // SecurityRuleUUIDKey is the attribute Key conforming to the
- // "security_rule.uuid" semantic conventions. It represents a rule ID that is
- // unique within the scope of a set or group of agents, observers, or other
- // entities using the rule for detection of this event.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "550e8400-e29b-41d4-a716-446655440000", "1100110011"
- SecurityRuleUUIDKey = attribute.Key("security_rule.uuid")
-
- // SecurityRuleVersionKey is the attribute Key conforming to the
- // "security_rule.version" semantic conventions. It represents the version /
- // revision of the rule being used for analysis.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.0.0"
- SecurityRuleVersionKey = attribute.Key("security_rule.version")
-)
-
-// SecurityRuleCategory returns an attribute KeyValue conforming to the
-// "security_rule.category" semantic conventions. It represents a categorization
-// value keyword used by the entity using the rule for detection of this event.
-func SecurityRuleCategory(val string) attribute.KeyValue {
- return SecurityRuleCategoryKey.String(val)
-}
-
-// SecurityRuleDescription returns an attribute KeyValue conforming to the
-// "security_rule.description" semantic conventions. It represents the
-// description of the rule generating the event.
-func SecurityRuleDescription(val string) attribute.KeyValue {
- return SecurityRuleDescriptionKey.String(val)
-}
-
-// SecurityRuleLicense returns an attribute KeyValue conforming to the
-// "security_rule.license" semantic conventions. It represents the name of the
-// license under which the rule used to generate this event is made available.
-func SecurityRuleLicense(val string) attribute.KeyValue {
- return SecurityRuleLicenseKey.String(val)
-}
-
-// SecurityRuleName returns an attribute KeyValue conforming to the
-// "security_rule.name" semantic conventions. It represents the name of the rule
-// or signature generating the event.
-func SecurityRuleName(val string) attribute.KeyValue {
- return SecurityRuleNameKey.String(val)
-}
-
-// SecurityRuleReference returns an attribute KeyValue conforming to the
-// "security_rule.reference" semantic conventions. It represents the reference
-// URL to additional information about the rule used to generate this event.
-func SecurityRuleReference(val string) attribute.KeyValue {
- return SecurityRuleReferenceKey.String(val)
-}
-
-// SecurityRuleRulesetName returns an attribute KeyValue conforming to the
-// "security_rule.ruleset.name" semantic conventions. It represents the name of
-// the ruleset, policy, group, or parent category in which the rule used to
-// generate this event is a member.
-func SecurityRuleRulesetName(val string) attribute.KeyValue {
- return SecurityRuleRulesetNameKey.String(val)
-}
-
-// SecurityRuleUUID returns an attribute KeyValue conforming to the
-// "security_rule.uuid" semantic conventions. It represents a rule ID that is
-// unique within the scope of a set or group of agents, observers, or other
-// entities using the rule for detection of this event.
-func SecurityRuleUUID(val string) attribute.KeyValue {
- return SecurityRuleUUIDKey.String(val)
-}
-
-// SecurityRuleVersion returns an attribute KeyValue conforming to the
-// "security_rule.version" semantic conventions. It represents the version /
-// revision of the rule being used for analysis.
-func SecurityRuleVersion(val string) attribute.KeyValue {
- return SecurityRuleVersionKey.String(val)
-}
-
-// Namespace: server
-const (
- // ServerAddressKey is the attribute Key conforming to the "server.address"
- // semantic conventions. It represents the server domain name if available
- // without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the client side, and when communicating through an
- // intermediary, `server.address` SHOULD represent the server address behind any
- // intermediaries, for example proxies, if it's available.
- ServerAddressKey = attribute.Key("server.address")
-
- // ServerPortKey is the attribute Key conforming to the "server.port" semantic
- // conventions. It represents the server port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: 80, 8080, 443
- // Note: When observed from the client side, and when communicating through an
- // intermediary, `server.port` SHOULD represent the server port behind any
- // intermediaries, for example proxies, if it's available.
- ServerPortKey = attribute.Key("server.port")
-)
-
-// ServerAddress returns an attribute KeyValue conforming to the "server.address"
-// semantic conventions. It represents the server domain name if available
-// without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
-func ServerAddress(val string) attribute.KeyValue {
- return ServerAddressKey.String(val)
-}
-
-// ServerPort returns an attribute KeyValue conforming to the "server.port"
-// semantic conventions. It represents the server port number.
-func ServerPort(val int) attribute.KeyValue {
- return ServerPortKey.Int(val)
-}
-
-// Namespace: service
-const (
- // ServiceCriticalityKey is the attribute Key conforming to the
- // "service.criticality" semantic conventions. It represents the operational
- // criticality of the service.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "critical", "high", "medium", "low"
- // Note: Application developers are encouraged to set `service.criticality` to
- // express the operational importance of their services. Telemetry consumers MAY
- // use this attribute to optimize telemetry collection or improve user
- // experience.
- ServiceCriticalityKey = attribute.Key("service.criticality")
-
- // ServiceInstanceIDKey is the attribute Key conforming to the
- // "service.instance.id" semantic conventions. It represents the string ID of
- // the service instance.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "627cc493-f310-47de-96bd-71410b7dec09"
- // Note: MUST be unique for each instance of the same
- // `service.namespace,service.name` pair (in other words
- // `service.namespace,service.name,service.instance.id` triplet MUST be globally
- // unique). The ID helps to
- // distinguish instances of the same service that exist at the same time (e.g.
- // instances of a horizontally scaled
- // service).
- //
- // Implementations, such as SDKs, are recommended to generate a random Version 1
- // or Version 4 [RFC
- // 4122] UUID, but are free to use an inherent unique ID as
- // the source of
- // this value if stability is desirable. In that case, the ID SHOULD be used as
- // source of a UUID Version 5 and
- // SHOULD use the following UUID as the namespace:
- // `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.
- //
- // UUIDs are typically recommended, as only an opaque value for the purposes of
- // identifying a service instance is
- // needed. Similar to what can be seen in the man page for the
- // [`/etc/machine-id`] file, the underlying
- // data, such as pod name and namespace should be treated as confidential, being
- // the user's choice to expose it
- // or not via another resource attribute.
- //
- // For applications running behind an application server (like unicorn), we do
- // not recommend using one identifier
- // for all processes participating in the application. Instead, it's recommended
- // each division (e.g. a worker
- // thread in unicorn) to have its own instance.id.
- //
- // It's not recommended for a Collector to set `service.instance.id` if it can't
- // unambiguously determine the
- // service instance that is generating that telemetry. For instance, creating an
- // UUID based on `pod.name` will
- // likely be wrong, as the Collector might not know from which container within
- // that pod the telemetry originated.
- // However, Collectors can set the `service.instance.id` if they can
- // unambiguously determine the service instance
- // for that telemetry. This is typically the case for scraping receivers, as
- // they know the target address and
- // port.
- //
- // [RFC
- // 4122]: https://www.ietf.org/rfc/rfc4122.txt
- // [`/etc/machine-id`]: https://www.freedesktop.org/software/systemd/man/latest/machine-id.html
- ServiceInstanceIDKey = attribute.Key("service.instance.id")
-
- // ServiceNameKey is the attribute Key conforming to the "service.name" semantic
- // conventions. It represents the logical name of the service.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "shoppingcart"
- // Note: MUST be the same for all instances of horizontally scaled services. If
- // the value was not specified, SDKs MUST fallback to `unknown_service:`
- // concatenated with the process executable name, e.g. `unknown_service:bash`.
- // If the process executable name is not available, the value MUST be set to
- // `unknown_service`.
- // The process executable name is the name of the process executable, the same
- // value as described by the [`process.executable.name`] resource attribute.
- //
- // [`process.executable.name`]: process.md
- ServiceNameKey = attribute.Key("service.name")
-
- // ServiceNamespaceKey is the attribute Key conforming to the
- // "service.namespace" semantic conventions. It represents a namespace for
- // `service.name`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "Shop"
- // Note: A string value having a meaning that helps to distinguish a group of
- // services, for example the team name that owns a group of services.
- // `service.name` is expected to be unique within the same namespace. If
- // `service.namespace` is not specified in the Resource then `service.name` is
- // expected to be unique for all services that have no explicit namespace
- // defined (so the empty/unspecified namespace is simply one more valid
- // namespace). Zero-length namespace string is assumed equal to unspecified
- // namespace.
- ServiceNamespaceKey = attribute.Key("service.namespace")
-
- // ServicePeerNameKey is the attribute Key conforming to the "service.peer.name"
- // semantic conventions. It represents the logical name of the service on the
- // other side of the connection. SHOULD be equal to the actual [`service.name`]
- // resource attribute of the remote service if any.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "shoppingcart"
- //
- // [`service.name`]: /docs/resource/README.md#service
- ServicePeerNameKey = attribute.Key("service.peer.name")
-
- // ServicePeerNamespaceKey is the attribute Key conforming to the
- // "service.peer.namespace" semantic conventions. It represents the logical
- // namespace of the service on the other side of the connection. SHOULD be equal
- // to the actual [`service.namespace`] resource attribute of the remote service
- // if any.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Shop"
- //
- // [`service.namespace`]: /docs/resource/README.md#service
- ServicePeerNamespaceKey = attribute.Key("service.peer.namespace")
-
- // ServiceVersionKey is the attribute Key conforming to the "service.version"
- // semantic conventions. It represents the version string of the service
- // component. The format is not defined by these conventions.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "2.0.0", "a01dbef8a"
- ServiceVersionKey = attribute.Key("service.version")
-)
-
-// ServiceInstanceID returns an attribute KeyValue conforming to the
-// "service.instance.id" semantic conventions. It represents the string ID of the
-// service instance.
-func ServiceInstanceID(val string) attribute.KeyValue {
- return ServiceInstanceIDKey.String(val)
-}
-
-// ServiceName returns an attribute KeyValue conforming to the "service.name"
-// semantic conventions. It represents the logical name of the service.
-func ServiceName(val string) attribute.KeyValue {
- return ServiceNameKey.String(val)
-}
-
-// ServiceNamespace returns an attribute KeyValue conforming to the
-// "service.namespace" semantic conventions. It represents a namespace for
-// `service.name`.
-func ServiceNamespace(val string) attribute.KeyValue {
- return ServiceNamespaceKey.String(val)
-}
-
-// ServicePeerName returns an attribute KeyValue conforming to the
-// "service.peer.name" semantic conventions. It represents the logical name of
-// the service on the other side of the connection. SHOULD be equal to the actual
-// [`service.name`] resource attribute of the remote service if any.
-//
-// [`service.name`]: /docs/resource/README.md#service
-func ServicePeerName(val string) attribute.KeyValue {
- return ServicePeerNameKey.String(val)
-}
-
-// ServicePeerNamespace returns an attribute KeyValue conforming to the
-// "service.peer.namespace" semantic conventions. It represents the logical
-// namespace of the service on the other side of the connection. SHOULD be equal
-// to the actual [`service.namespace`] resource attribute of the remote service
-// if any.
-//
-// [`service.namespace`]: /docs/resource/README.md#service
-func ServicePeerNamespace(val string) attribute.KeyValue {
- return ServicePeerNamespaceKey.String(val)
-}
-
-// ServiceVersion returns an attribute KeyValue conforming to the
-// "service.version" semantic conventions. It represents the version string of
-// the service component. The format is not defined by these conventions.
-func ServiceVersion(val string) attribute.KeyValue {
- return ServiceVersionKey.String(val)
-}
-
-// Enum values for service.criticality
-var (
- // Service is business-critical; downtime directly impacts revenue, user
- // experience, or core functionality.
- //
- // Stability: development
- ServiceCriticalityCritical = ServiceCriticalityKey.String("critical")
- // Service is important but has degradation tolerance or fallback mechanisms.
- //
- // Stability: development
- ServiceCriticalityHigh = ServiceCriticalityKey.String("high")
- // Service provides supplementary functionality; degradation has limited user
- // impact.
- //
- // Stability: development
- ServiceCriticalityMedium = ServiceCriticalityKey.String("medium")
- // Service is non-essential to core operations; used for background tasks or
- // internal tools.
- //
- // Stability: development
- ServiceCriticalityLow = ServiceCriticalityKey.String("low")
-)
-
-// Namespace: session
-const (
- // SessionIDKey is the attribute Key conforming to the "session.id" semantic
- // conventions. It represents a unique id to identify a session.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 00112233-4455-6677-8899-aabbccddeeff
- SessionIDKey = attribute.Key("session.id")
-
- // SessionPreviousIDKey is the attribute Key conforming to the
- // "session.previous_id" semantic conventions. It represents the previous
- // `session.id` for this user, when known.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 00112233-4455-6677-8899-aabbccddeeff
- SessionPreviousIDKey = attribute.Key("session.previous_id")
-)
-
-// SessionID returns an attribute KeyValue conforming to the "session.id"
-// semantic conventions. It represents a unique id to identify a session.
-func SessionID(val string) attribute.KeyValue {
- return SessionIDKey.String(val)
-}
-
-// SessionPreviousID returns an attribute KeyValue conforming to the
-// "session.previous_id" semantic conventions. It represents the previous
-// `session.id` for this user, when known.
-func SessionPreviousID(val string) attribute.KeyValue {
- return SessionPreviousIDKey.String(val)
-}
-
-// Namespace: signalr
-const (
- // SignalRConnectionStatusKey is the attribute Key conforming to the
- // "signalr.connection.status" semantic conventions. It represents the signalR
- // HTTP connection closure status.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "app_shutdown", "timeout"
- SignalRConnectionStatusKey = attribute.Key("signalr.connection.status")
-
- // SignalRTransportKey is the attribute Key conforming to the
- // "signalr.transport" semantic conventions. It represents the
- // [SignalR transport type].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "web_sockets", "long_polling"
- //
- // [SignalR transport type]: https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md
- SignalRTransportKey = attribute.Key("signalr.transport")
-)
-
-// Enum values for signalr.connection.status
-var (
- // The connection was closed normally.
- // Stability: stable
- SignalRConnectionStatusNormalClosure = SignalRConnectionStatusKey.String("normal_closure")
- // The connection was closed due to a timeout.
- // Stability: stable
- SignalRConnectionStatusTimeout = SignalRConnectionStatusKey.String("timeout")
- // The connection was closed because the app is shutting down.
- // Stability: stable
- SignalRConnectionStatusAppShutdown = SignalRConnectionStatusKey.String("app_shutdown")
-)
-
-// Enum values for signalr.transport
-var (
- // ServerSentEvents protocol
- // Stability: stable
- SignalRTransportServerSentEvents = SignalRTransportKey.String("server_sent_events")
- // LongPolling protocol
- // Stability: stable
- SignalRTransportLongPolling = SignalRTransportKey.String("long_polling")
- // WebSockets protocol
- // Stability: stable
- SignalRTransportWebSockets = SignalRTransportKey.String("web_sockets")
-)
-
-// Namespace: source
-const (
- // SourceAddressKey is the attribute Key conforming to the "source.address"
- // semantic conventions. It represents the source address - domain name if
- // available without reverse DNS lookup; otherwise, IP address or Unix domain
- // socket name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "source.example.com", "10.1.2.80", "/tmp/my.sock"
- // Note: When observed from the destination side, and when communicating through
- // an intermediary, `source.address` SHOULD represent the source address behind
- // any intermediaries, for example proxies, if it's available.
- SourceAddressKey = attribute.Key("source.address")
-
- // SourcePortKey is the attribute Key conforming to the "source.port" semantic
- // conventions. It represents the source port number.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 3389, 2888
- SourcePortKey = attribute.Key("source.port")
-)
-
-// SourceAddress returns an attribute KeyValue conforming to the "source.address"
-// semantic conventions. It represents the source address - domain name if
-// available without reverse DNS lookup; otherwise, IP address or Unix domain
-// socket name.
-func SourceAddress(val string) attribute.KeyValue {
- return SourceAddressKey.String(val)
-}
-
-// SourcePort returns an attribute KeyValue conforming to the "source.port"
-// semantic conventions. It represents the source port number.
-func SourcePort(val int) attribute.KeyValue {
- return SourcePortKey.Int(val)
-}
-
-// Namespace: system
-const (
- // SystemDeviceKey is the attribute Key conforming to the "system.device"
- // semantic conventions. It represents the device identifier.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "(identifier)"
- SystemDeviceKey = attribute.Key("system.device")
-
- // SystemFilesystemModeKey is the attribute Key conforming to the
- // "system.filesystem.mode" semantic conventions. It represents the filesystem
- // mode.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "rw, ro"
- SystemFilesystemModeKey = attribute.Key("system.filesystem.mode")
-
- // SystemFilesystemMountpointKey is the attribute Key conforming to the
- // "system.filesystem.mountpoint" semantic conventions. It represents the
- // filesystem mount path.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/mnt/data"
- SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint")
-
- // SystemFilesystemStateKey is the attribute Key conforming to the
- // "system.filesystem.state" semantic conventions. It represents the filesystem
- // state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "used"
- SystemFilesystemStateKey = attribute.Key("system.filesystem.state")
-
- // SystemFilesystemTypeKey is the attribute Key conforming to the
- // "system.filesystem.type" semantic conventions. It represents the filesystem
- // type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ext4"
- SystemFilesystemTypeKey = attribute.Key("system.filesystem.type")
-
- // SystemMemoryLinuxHugepagesStateKey is the attribute Key conforming to the
- // "system.memory.linux.hugepages.state" semantic conventions. It represents the
- // Linux HugePages memory state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "free", "used"
- SystemMemoryLinuxHugepagesStateKey = attribute.Key("system.memory.linux.hugepages.state")
-
- // SystemMemoryLinuxSlabStateKey is the attribute Key conforming to the
- // "system.memory.linux.slab.state" semantic conventions. It represents the
- // Linux Slab memory state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "reclaimable", "unreclaimable"
- SystemMemoryLinuxSlabStateKey = attribute.Key("system.memory.linux.slab.state")
-
- // SystemMemoryStateKey is the attribute Key conforming to the
- // "system.memory.state" semantic conventions. It represents the memory state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "free", "cached"
- SystemMemoryStateKey = attribute.Key("system.memory.state")
-
- // SystemPagingDirectionKey is the attribute Key conforming to the
- // "system.paging.direction" semantic conventions. It represents the paging
- // access direction.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "in"
- SystemPagingDirectionKey = attribute.Key("system.paging.direction")
-
- // SystemPagingFaultTypeKey is the attribute Key conforming to the
- // "system.paging.fault.type" semantic conventions. It represents the paging
- // fault type.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "minor"
- SystemPagingFaultTypeKey = attribute.Key("system.paging.fault.type")
-
- // SystemPagingStateKey is the attribute Key conforming to the
- // "system.paging.state" semantic conventions. It represents the memory paging
- // state.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "free"
- SystemPagingStateKey = attribute.Key("system.paging.state")
-)
-
-// SystemDevice returns an attribute KeyValue conforming to the "system.device"
-// semantic conventions. It represents the device identifier.
-func SystemDevice(val string) attribute.KeyValue {
- return SystemDeviceKey.String(val)
-}
-
-// SystemFilesystemMode returns an attribute KeyValue conforming to the
-// "system.filesystem.mode" semantic conventions. It represents the filesystem
-// mode.
-func SystemFilesystemMode(val string) attribute.KeyValue {
- return SystemFilesystemModeKey.String(val)
-}
-
-// SystemFilesystemMountpoint returns an attribute KeyValue conforming to the
-// "system.filesystem.mountpoint" semantic conventions. It represents the
-// filesystem mount path.
-func SystemFilesystemMountpoint(val string) attribute.KeyValue {
- return SystemFilesystemMountpointKey.String(val)
-}
-
-// Enum values for system.filesystem.state
-var (
- // used
- // Stability: development
- SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used")
- // free
- // Stability: development
- SystemFilesystemStateFree = SystemFilesystemStateKey.String("free")
- // reserved
- // Stability: development
- SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved")
-)
-
-// Enum values for system.filesystem.type
-var (
- // fat32
- // Stability: development
- SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32")
- // exfat
- // Stability: development
- SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat")
- // ntfs
- // Stability: development
- SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs")
- // refs
- // Stability: development
- SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs")
- // hfsplus
- // Stability: development
- SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus")
- // ext4
- // Stability: development
- SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4")
-)
-
-// Enum values for system.memory.linux.hugepages.state
-var (
- // free
- // Stability: development
- SystemMemoryLinuxHugepagesStateFree = SystemMemoryLinuxHugepagesStateKey.String("free")
- // used
- // Stability: development
- SystemMemoryLinuxHugepagesStateUsed = SystemMemoryLinuxHugepagesStateKey.String("used")
-)
-
-// Enum values for system.memory.linux.slab.state
-var (
- // reclaimable
- // Stability: development
- SystemMemoryLinuxSlabStateReclaimable = SystemMemoryLinuxSlabStateKey.String("reclaimable")
- // unreclaimable
- // Stability: development
- SystemMemoryLinuxSlabStateUnreclaimable = SystemMemoryLinuxSlabStateKey.String("unreclaimable")
-)
-
-// Enum values for system.memory.state
-var (
- // Actual used virtual memory in bytes.
- // Stability: development
- SystemMemoryStateUsed = SystemMemoryStateKey.String("used")
- // free
- // Stability: development
- SystemMemoryStateFree = SystemMemoryStateKey.String("free")
- // buffers
- // Stability: development
- SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers")
- // cached
- // Stability: development
- SystemMemoryStateCached = SystemMemoryStateKey.String("cached")
-)
-
-// Enum values for system.paging.direction
-var (
- // in
- // Stability: development
- SystemPagingDirectionIn = SystemPagingDirectionKey.String("in")
- // out
- // Stability: development
- SystemPagingDirectionOut = SystemPagingDirectionKey.String("out")
-)
-
-// Enum values for system.paging.fault.type
-var (
- // major
- // Stability: development
- SystemPagingFaultTypeMajor = SystemPagingFaultTypeKey.String("major")
- // minor
- // Stability: development
- SystemPagingFaultTypeMinor = SystemPagingFaultTypeKey.String("minor")
-)
-
-// Enum values for system.paging.state
-var (
- // used
- // Stability: development
- SystemPagingStateUsed = SystemPagingStateKey.String("used")
- // free
- // Stability: development
- SystemPagingStateFree = SystemPagingStateKey.String("free")
-)
-
-// Namespace: telemetry
-const (
- // TelemetryDistroNameKey is the attribute Key conforming to the
- // "telemetry.distro.name" semantic conventions. It represents the name of the
- // auto instrumentation agent or distribution, if used.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "parts-unlimited-java"
- // Note: Official auto instrumentation agents and distributions SHOULD set the
- // `telemetry.distro.name` attribute to
- // a string starting with `opentelemetry-`, e.g.
- // `opentelemetry-java-instrumentation`.
- TelemetryDistroNameKey = attribute.Key("telemetry.distro.name")
-
- // TelemetryDistroVersionKey is the attribute Key conforming to the
- // "telemetry.distro.version" semantic conventions. It represents the version
- // string of the auto instrumentation agent or distribution, if used.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.2.3"
- TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version")
-
- // TelemetrySDKLanguageKey is the attribute Key conforming to the
- // "telemetry.sdk.language" semantic conventions. It represents the language of
- // the telemetry SDK.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples:
- TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language")
-
- // TelemetrySDKNameKey is the attribute Key conforming to the
- // "telemetry.sdk.name" semantic conventions. It represents the name of the
- // telemetry SDK as defined above.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "opentelemetry"
- // Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to
- // `opentelemetry`.
- // If another SDK, like a fork or a vendor-provided implementation, is used,
- // this SDK MUST set the
- // `telemetry.sdk.name` attribute to the fully-qualified class or module name of
- // this SDK's main entry point
- // or another suitable identifier depending on the language.
- // The identifier `opentelemetry` is reserved and MUST NOT be used in this case.
- // All custom identifiers SHOULD be stable across different versions of an
- // implementation.
- TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name")
-
- // TelemetrySDKVersionKey is the attribute Key conforming to the
- // "telemetry.sdk.version" semantic conventions. It represents the version
- // string of the telemetry SDK.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "1.2.3"
- TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version")
-)
-
-// TelemetryDistroName returns an attribute KeyValue conforming to the
-// "telemetry.distro.name" semantic conventions. It represents the name of the
-// auto instrumentation agent or distribution, if used.
-func TelemetryDistroName(val string) attribute.KeyValue {
- return TelemetryDistroNameKey.String(val)
-}
-
-// TelemetryDistroVersion returns an attribute KeyValue conforming to the
-// "telemetry.distro.version" semantic conventions. It represents the version
-// string of the auto instrumentation agent or distribution, if used.
-func TelemetryDistroVersion(val string) attribute.KeyValue {
- return TelemetryDistroVersionKey.String(val)
-}
-
-// TelemetrySDKName returns an attribute KeyValue conforming to the
-// "telemetry.sdk.name" semantic conventions. It represents the name of the
-// telemetry SDK as defined above.
-func TelemetrySDKName(val string) attribute.KeyValue {
- return TelemetrySDKNameKey.String(val)
-}
-
-// TelemetrySDKVersion returns an attribute KeyValue conforming to the
-// "telemetry.sdk.version" semantic conventions. It represents the version string
-// of the telemetry SDK.
-func TelemetrySDKVersion(val string) attribute.KeyValue {
- return TelemetrySDKVersionKey.String(val)
-}
-
-// Enum values for telemetry.sdk.language
-var (
- // cpp
- // Stability: stable
- TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp")
- // dotnet
- // Stability: stable
- TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet")
- // erlang
- // Stability: stable
- TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang")
- // go
- // Stability: stable
- TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go")
- // java
- // Stability: stable
- TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java")
- // nodejs
- // Stability: stable
- TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs")
- // php
- // Stability: stable
- TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php")
- // python
- // Stability: stable
- TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python")
- // ruby
- // Stability: stable
- TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby")
- // rust
- // Stability: stable
- TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust")
- // swift
- // Stability: stable
- TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift")
- // webjs
- // Stability: stable
- TelemetrySDKLanguageWebJS = TelemetrySDKLanguageKey.String("webjs")
-)
-
-// Namespace: test
-const (
- // TestCaseNameKey is the attribute Key conforming to the "test.case.name"
- // semantic conventions. It represents the fully qualified human readable name
- // of the [test case].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "org.example.TestCase1.test1", "example/tests/TestCase1.test1",
- // "ExampleTestCase1_test1"
- //
- // [test case]: https://wikipedia.org/wiki/Test_case
- TestCaseNameKey = attribute.Key("test.case.name")
-
- // TestCaseResultStatusKey is the attribute Key conforming to the
- // "test.case.result.status" semantic conventions. It represents the status of
- // the actual test case result from test execution.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "pass", "fail"
- TestCaseResultStatusKey = attribute.Key("test.case.result.status")
-
- // TestSuiteNameKey is the attribute Key conforming to the "test.suite.name"
- // semantic conventions. It represents the human readable name of a [test suite]
- // .
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TestSuite1"
- //
- // [test suite]: https://wikipedia.org/wiki/Test_suite
- TestSuiteNameKey = attribute.Key("test.suite.name")
-
- // TestSuiteRunStatusKey is the attribute Key conforming to the
- // "test.suite.run.status" semantic conventions. It represents the status of the
- // test suite run.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "success", "failure", "skipped", "aborted", "timed_out",
- // "in_progress"
- TestSuiteRunStatusKey = attribute.Key("test.suite.run.status")
-)
-
-// TestCaseName returns an attribute KeyValue conforming to the "test.case.name"
-// semantic conventions. It represents the fully qualified human readable name of
-// the [test case].
-//
-// [test case]: https://wikipedia.org/wiki/Test_case
-func TestCaseName(val string) attribute.KeyValue {
- return TestCaseNameKey.String(val)
-}
-
-// TestSuiteName returns an attribute KeyValue conforming to the
-// "test.suite.name" semantic conventions. It represents the human readable name
-// of a [test suite].
-//
-// [test suite]: https://wikipedia.org/wiki/Test_suite
-func TestSuiteName(val string) attribute.KeyValue {
- return TestSuiteNameKey.String(val)
-}
-
-// Enum values for test.case.result.status
-var (
- // pass
- // Stability: development
- TestCaseResultStatusPass = TestCaseResultStatusKey.String("pass")
- // fail
- // Stability: development
- TestCaseResultStatusFail = TestCaseResultStatusKey.String("fail")
-)
-
-// Enum values for test.suite.run.status
-var (
- // success
- // Stability: development
- TestSuiteRunStatusSuccess = TestSuiteRunStatusKey.String("success")
- // failure
- // Stability: development
- TestSuiteRunStatusFailure = TestSuiteRunStatusKey.String("failure")
- // skipped
- // Stability: development
- TestSuiteRunStatusSkipped = TestSuiteRunStatusKey.String("skipped")
- // aborted
- // Stability: development
- TestSuiteRunStatusAborted = TestSuiteRunStatusKey.String("aborted")
- // timed_out
- // Stability: development
- TestSuiteRunStatusTimedOut = TestSuiteRunStatusKey.String("timed_out")
- // in_progress
- // Stability: development
- TestSuiteRunStatusInProgress = TestSuiteRunStatusKey.String("in_progress")
-)
-
-// Namespace: thread
-const (
- // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic
- // conventions. It represents the current "managed" thread ID (as opposed to OS
- // thread ID).
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Note:
- // Examples of where the value can be extracted from:
- //
- // | Language or platform | Source |
- // | --- | --- |
- // | JVM | `Thread.currentThread().threadId()` |
- // | .NET | `Thread.CurrentThread.ManagedThreadId` |
- // | Python | `threading.current_thread().ident` |
- // | Ruby | `Thread.current.object_id` |
- // | C++ | `std::this_thread::get_id()` |
- // | Erlang | `erlang:self()` |
- ThreadIDKey = attribute.Key("thread.id")
-
- // ThreadNameKey is the attribute Key conforming to the "thread.name" semantic
- // conventions. It represents the current thread name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: main
- // Note:
- // Examples of where the value can be extracted from:
- //
- // | Language or platform | Source |
- // | --- | --- |
- // | JVM | `Thread.currentThread().getName()` |
- // | .NET | `Thread.CurrentThread.Name` |
- // | Python | `threading.current_thread().name` |
- // | Ruby | `Thread.current.name` |
- // | Erlang | `erlang:process_info(self(), registered_name)` |
- ThreadNameKey = attribute.Key("thread.name")
-)
-
-// ThreadID returns an attribute KeyValue conforming to the "thread.id" semantic
-// conventions. It represents the current "managed" thread ID (as opposed to OS
-// thread ID).
-func ThreadID(val int) attribute.KeyValue {
- return ThreadIDKey.Int(val)
-}
-
-// ThreadName returns an attribute KeyValue conforming to the "thread.name"
-// semantic conventions. It represents the current thread name.
-func ThreadName(val string) attribute.KeyValue {
- return ThreadNameKey.String(val)
-}
-
-// Namespace: tls
-const (
- // TLSCipherKey is the attribute Key conforming to the "tls.cipher" semantic
- // conventions. It represents the string indicating the [cipher] used during the
- // current connection.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TLS_RSA_WITH_3DES_EDE_CBC_SHA",
- // "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
- // Note: The values allowed for `tls.cipher` MUST be one of the `Descriptions`
- // of the [registered TLS Cipher Suits].
- //
- // [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5
- // [registered TLS Cipher Suits]: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4
- TLSCipherKey = attribute.Key("tls.cipher")
-
- // TLSClientCertificateKey is the attribute Key conforming to the
- // "tls.client.certificate" semantic conventions. It represents the PEM-encoded
- // stand-alone certificate offered by the client. This is usually
- // mutually-exclusive of `client.certificate_chain` since this value also exists
- // in that list.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII..."
- TLSClientCertificateKey = attribute.Key("tls.client.certificate")
-
- // TLSClientCertificateChainKey is the attribute Key conforming to the
- // "tls.client.certificate_chain" semantic conventions. It represents the array
- // of PEM-encoded certificates that make up the certificate chain offered by the
- // client. This is usually mutually-exclusive of `client.certificate` since that
- // value should be the first certificate in the chain.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII...", "MI..."
- TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain")
-
- // TLSClientHashMd5Key is the attribute Key conforming to the
- // "tls.client.hash.md5" semantic conventions. It represents the certificate
- // fingerprint using the MD5 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"
- TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5")
-
- // TLSClientHashSha1Key is the attribute Key conforming to the
- // "tls.client.hash.sha1" semantic conventions. It represents the certificate
- // fingerprint using the SHA1 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A"
- TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1")
-
- // TLSClientHashSha256Key is the attribute Key conforming to the
- // "tls.client.hash.sha256" semantic conventions. It represents the certificate
- // fingerprint using the SHA256 digest of DER-encoded version of certificate
- // offered by the client. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"
- TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256")
-
- // TLSClientIssuerKey is the attribute Key conforming to the "tls.client.issuer"
- // semantic conventions. It represents the distinguished name of [subject] of
- // the issuer of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"
- //
- // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
- TLSClientIssuerKey = attribute.Key("tls.client.issuer")
-
- // TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3"
- // semantic conventions. It represents a hash that identifies clients based on
- // how they perform an SSL/TLS handshake.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "d4e5b18d6b55c71272893221c96ba240"
- TLSClientJa3Key = attribute.Key("tls.client.ja3")
-
- // TLSClientNotAfterKey is the attribute Key conforming to the
- // "tls.client.not_after" semantic conventions. It represents the date/Time
- // indicating when client certificate is no longer considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T00:00:00.000Z"
- TLSClientNotAfterKey = attribute.Key("tls.client.not_after")
-
- // TLSClientNotBeforeKey is the attribute Key conforming to the
- // "tls.client.not_before" semantic conventions. It represents the date/Time
- // indicating when client certificate is first considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1970-01-01T00:00:00.000Z"
- TLSClientNotBeforeKey = attribute.Key("tls.client.not_before")
-
- // TLSClientSubjectKey is the attribute Key conforming to the
- // "tls.client.subject" semantic conventions. It represents the distinguished
- // name of subject of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=myclient, OU=Documentation Team, DC=example, DC=com"
- TLSClientSubjectKey = attribute.Key("tls.client.subject")
-
- // TLSClientSupportedCiphersKey is the attribute Key conforming to the
- // "tls.client.supported_ciphers" semantic conventions. It represents the array
- // of ciphers offered by the client during the client hello.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
- // "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
- TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers")
-
- // TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic
- // conventions. It represents the string indicating the curve used for the given
- // cipher, when applicable.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "secp256r1"
- TLSCurveKey = attribute.Key("tls.curve")
-
- // TLSEstablishedKey is the attribute Key conforming to the "tls.established"
- // semantic conventions. It represents the boolean flag indicating if the TLS
- // negotiation was successful and transitioned to an encrypted tunnel.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: true
- TLSEstablishedKey = attribute.Key("tls.established")
-
- // TLSNextProtocolKey is the attribute Key conforming to the "tls.next_protocol"
- // semantic conventions. It represents the string indicating the protocol being
- // tunneled. Per the values in the [IANA registry], this string should be lower
- // case.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "http/1.1"
- //
- // [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
- TLSNextProtocolKey = attribute.Key("tls.next_protocol")
-
- // TLSProtocolNameKey is the attribute Key conforming to the "tls.protocol.name"
- // semantic conventions. It represents the normalized lowercase protocol name
- // parsed from original string of the negotiated [SSL/TLS protocol version].
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- //
- // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values
- TLSProtocolNameKey = attribute.Key("tls.protocol.name")
-
- // TLSProtocolVersionKey is the attribute Key conforming to the
- // "tls.protocol.version" semantic conventions. It represents the numeric part
- // of the version parsed from the original string of the negotiated
- // [SSL/TLS protocol version].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1.2", "3"
- //
- // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values
- TLSProtocolVersionKey = attribute.Key("tls.protocol.version")
-
- // TLSResumedKey is the attribute Key conforming to the "tls.resumed" semantic
- // conventions. It represents the boolean flag indicating if this TLS connection
- // was resumed from an existing TLS negotiation.
- //
- // Type: boolean
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: true
- TLSResumedKey = attribute.Key("tls.resumed")
-
- // TLSServerCertificateKey is the attribute Key conforming to the
- // "tls.server.certificate" semantic conventions. It represents the PEM-encoded
- // stand-alone certificate offered by the server. This is usually
- // mutually-exclusive of `server.certificate_chain` since this value also exists
- // in that list.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII..."
- TLSServerCertificateKey = attribute.Key("tls.server.certificate")
-
- // TLSServerCertificateChainKey is the attribute Key conforming to the
- // "tls.server.certificate_chain" semantic conventions. It represents the array
- // of PEM-encoded certificates that make up the certificate chain offered by the
- // server. This is usually mutually-exclusive of `server.certificate` since that
- // value should be the first certificate in the chain.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "MII...", "MI..."
- TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain")
-
- // TLSServerHashMd5Key is the attribute Key conforming to the
- // "tls.server.hash.md5" semantic conventions. It represents the certificate
- // fingerprint using the MD5 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"
- TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5")
-
- // TLSServerHashSha1Key is the attribute Key conforming to the
- // "tls.server.hash.sha1" semantic conventions. It represents the certificate
- // fingerprint using the SHA1 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A"
- TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1")
-
- // TLSServerHashSha256Key is the attribute Key conforming to the
- // "tls.server.hash.sha256" semantic conventions. It represents the certificate
- // fingerprint using the SHA256 digest of DER-encoded version of certificate
- // offered by the server. For consistency with other hash values, this value
- // should be formatted as an uppercase hash.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"
- TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256")
-
- // TLSServerIssuerKey is the attribute Key conforming to the "tls.server.issuer"
- // semantic conventions. It represents the distinguished name of [subject] of
- // the issuer of the x.509 certificate presented by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"
- //
- // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
- TLSServerIssuerKey = attribute.Key("tls.server.issuer")
-
- // TLSServerJa3sKey is the attribute Key conforming to the "tls.server.ja3s"
- // semantic conventions. It represents a hash that identifies servers based on
- // how they perform an SSL/TLS handshake.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "d4e5b18d6b55c71272893221c96ba240"
- TLSServerJa3sKey = attribute.Key("tls.server.ja3s")
-
- // TLSServerNotAfterKey is the attribute Key conforming to the
- // "tls.server.not_after" semantic conventions. It represents the date/Time
- // indicating when server certificate is no longer considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "2021-01-01T00:00:00.000Z"
- TLSServerNotAfterKey = attribute.Key("tls.server.not_after")
-
- // TLSServerNotBeforeKey is the attribute Key conforming to the
- // "tls.server.not_before" semantic conventions. It represents the date/Time
- // indicating when server certificate is first considered valid.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "1970-01-01T00:00:00.000Z"
- TLSServerNotBeforeKey = attribute.Key("tls.server.not_before")
-
- // TLSServerSubjectKey is the attribute Key conforming to the
- // "tls.server.subject" semantic conventions. It represents the distinguished
- // name of subject of the x.509 certificate presented by the server.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "CN=myserver, OU=Documentation Team, DC=example, DC=com"
- TLSServerSubjectKey = attribute.Key("tls.server.subject")
-)
-
-// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher"
-// semantic conventions. It represents the string indicating the [cipher] used
-// during the current connection.
-//
-// [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5
-func TLSCipher(val string) attribute.KeyValue {
- return TLSCipherKey.String(val)
-}
-
-// TLSClientCertificate returns an attribute KeyValue conforming to the
-// "tls.client.certificate" semantic conventions. It represents the PEM-encoded
-// stand-alone certificate offered by the client. This is usually
-// mutually-exclusive of `client.certificate_chain` since this value also exists
-// in that list.
-func TLSClientCertificate(val string) attribute.KeyValue {
- return TLSClientCertificateKey.String(val)
-}
-
-// TLSClientCertificateChain returns an attribute KeyValue conforming to the
-// "tls.client.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by the
-// client. This is usually mutually-exclusive of `client.certificate` since that
-// value should be the first certificate in the chain.
-func TLSClientCertificateChain(val ...string) attribute.KeyValue {
- return TLSClientCertificateChainKey.StringSlice(val)
-}
-
-// TLSClientHashMd5 returns an attribute KeyValue conforming to the
-// "tls.client.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate offered
-// by the client. For consistency with other hash values, this value should be
-// formatted as an uppercase hash.
-func TLSClientHashMd5(val string) attribute.KeyValue {
- return TLSClientHashMd5Key.String(val)
-}
-
-// TLSClientHashSha1 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha1(val string) attribute.KeyValue {
- return TLSClientHashSha1Key.String(val)
-}
-
-// TLSClientHashSha256 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha256(val string) attribute.KeyValue {
- return TLSClientHashSha256Key.String(val)
-}
-
-// TLSClientIssuer returns an attribute KeyValue conforming to the
-// "tls.client.issuer" semantic conventions. It represents the distinguished name
-// of [subject] of the issuer of the x.509 certificate presented by the client.
-//
-// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
-func TLSClientIssuer(val string) attribute.KeyValue {
- return TLSClientIssuerKey.String(val)
-}
-
-// TLSClientJa3 returns an attribute KeyValue conforming to the "tls.client.ja3"
-// semantic conventions. It represents a hash that identifies clients based on
-// how they perform an SSL/TLS handshake.
-func TLSClientJa3(val string) attribute.KeyValue {
- return TLSClientJa3Key.String(val)
-}
-
-// TLSClientNotAfter returns an attribute KeyValue conforming to the
-// "tls.client.not_after" semantic conventions. It represents the date/Time
-// indicating when client certificate is no longer considered valid.
-func TLSClientNotAfter(val string) attribute.KeyValue {
- return TLSClientNotAfterKey.String(val)
-}
-
-// TLSClientNotBefore returns an attribute KeyValue conforming to the
-// "tls.client.not_before" semantic conventions. It represents the date/Time
-// indicating when client certificate is first considered valid.
-func TLSClientNotBefore(val string) attribute.KeyValue {
- return TLSClientNotBeforeKey.String(val)
-}
-
-// TLSClientSubject returns an attribute KeyValue conforming to the
-// "tls.client.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the client.
-func TLSClientSubject(val string) attribute.KeyValue {
- return TLSClientSubjectKey.String(val)
-}
-
-// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the
-// "tls.client.supported_ciphers" semantic conventions. It represents the array
-// of ciphers offered by the client during the client hello.
-func TLSClientSupportedCiphers(val ...string) attribute.KeyValue {
- return TLSClientSupportedCiphersKey.StringSlice(val)
-}
-
-// TLSCurve returns an attribute KeyValue conforming to the "tls.curve" semantic
-// conventions. It represents the string indicating the curve used for the given
-// cipher, when applicable.
-func TLSCurve(val string) attribute.KeyValue {
- return TLSCurveKey.String(val)
-}
-
-// TLSEstablished returns an attribute KeyValue conforming to the
-// "tls.established" semantic conventions. It represents the boolean flag
-// indicating if the TLS negotiation was successful and transitioned to an
-// encrypted tunnel.
-func TLSEstablished(val bool) attribute.KeyValue {
- return TLSEstablishedKey.Bool(val)
-}
-
-// TLSNextProtocol returns an attribute KeyValue conforming to the
-// "tls.next_protocol" semantic conventions. It represents the string indicating
-// the protocol being tunneled. Per the values in the [IANA registry], this
-// string should be lower case.
-//
-// [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
-func TLSNextProtocol(val string) attribute.KeyValue {
- return TLSNextProtocolKey.String(val)
-}
-
-// TLSProtocolVersion returns an attribute KeyValue conforming to the
-// "tls.protocol.version" semantic conventions. It represents the numeric part of
-// the version parsed from the original string of the negotiated
-// [SSL/TLS protocol version].
-//
-// [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values
-func TLSProtocolVersion(val string) attribute.KeyValue {
- return TLSProtocolVersionKey.String(val)
-}
-
-// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed"
-// semantic conventions. It represents the boolean flag indicating if this TLS
-// connection was resumed from an existing TLS negotiation.
-func TLSResumed(val bool) attribute.KeyValue {
- return TLSResumedKey.Bool(val)
-}
-
-// TLSServerCertificate returns an attribute KeyValue conforming to the
-// "tls.server.certificate" semantic conventions. It represents the PEM-encoded
-// stand-alone certificate offered by the server. This is usually
-// mutually-exclusive of `server.certificate_chain` since this value also exists
-// in that list.
-func TLSServerCertificate(val string) attribute.KeyValue {
- return TLSServerCertificateKey.String(val)
-}
-
-// TLSServerCertificateChain returns an attribute KeyValue conforming to the
-// "tls.server.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by the
-// server. This is usually mutually-exclusive of `server.certificate` since that
-// value should be the first certificate in the chain.
-func TLSServerCertificateChain(val ...string) attribute.KeyValue {
- return TLSServerCertificateChainKey.StringSlice(val)
-}
-
-// TLSServerHashMd5 returns an attribute KeyValue conforming to the
-// "tls.server.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate offered
-// by the server. For consistency with other hash values, this value should be
-// formatted as an uppercase hash.
-func TLSServerHashMd5(val string) attribute.KeyValue {
- return TLSServerHashMd5Key.String(val)
-}
-
-// TLSServerHashSha1 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha1(val string) attribute.KeyValue {
- return TLSServerHashSha1Key.String(val)
-}
-
-// TLSServerHashSha256 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha256(val string) attribute.KeyValue {
- return TLSServerHashSha256Key.String(val)
-}
-
-// TLSServerIssuer returns an attribute KeyValue conforming to the
-// "tls.server.issuer" semantic conventions. It represents the distinguished name
-// of [subject] of the issuer of the x.509 certificate presented by the client.
-//
-// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6
-func TLSServerIssuer(val string) attribute.KeyValue {
- return TLSServerIssuerKey.String(val)
-}
-
-// TLSServerJa3s returns an attribute KeyValue conforming to the
-// "tls.server.ja3s" semantic conventions. It represents a hash that identifies
-// servers based on how they perform an SSL/TLS handshake.
-func TLSServerJa3s(val string) attribute.KeyValue {
- return TLSServerJa3sKey.String(val)
-}
-
-// TLSServerNotAfter returns an attribute KeyValue conforming to the
-// "tls.server.not_after" semantic conventions. It represents the date/Time
-// indicating when server certificate is no longer considered valid.
-func TLSServerNotAfter(val string) attribute.KeyValue {
- return TLSServerNotAfterKey.String(val)
-}
-
-// TLSServerNotBefore returns an attribute KeyValue conforming to the
-// "tls.server.not_before" semantic conventions. It represents the date/Time
-// indicating when server certificate is first considered valid.
-func TLSServerNotBefore(val string) attribute.KeyValue {
- return TLSServerNotBeforeKey.String(val)
-}
-
-// TLSServerSubject returns an attribute KeyValue conforming to the
-// "tls.server.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the server.
-func TLSServerSubject(val string) attribute.KeyValue {
- return TLSServerSubjectKey.String(val)
-}
-
-// Enum values for tls.protocol.name
-var (
- // ssl
- // Stability: development
- TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl")
- // tls
- // Stability: development
- TLSProtocolNameTLS = TLSProtocolNameKey.String("tls")
-)
-
-// Namespace: url
-const (
- // URLDomainKey is the attribute Key conforming to the "url.domain" semantic
- // conventions. It represents the domain extracted from the `url.full`, such as
- // "opentelemetry.io".
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "www.foo.bar", "opentelemetry.io", "3.12.167.2",
- // "[1080:0:0:0:8:800:200C:417A]"
- // Note: In some cases a URL may refer to an IP and/or port directly, without a
- // domain name. In this case, the IP address would go to the domain field. If
- // the URL contains a [literal IPv6 address] enclosed by `[` and `]`, the `[`
- // and `]` characters should also be captured in the domain field.
- //
- // [literal IPv6 address]: https://www.rfc-editor.org/rfc/rfc2732#section-2
- URLDomainKey = attribute.Key("url.domain")
-
- // URLExtensionKey is the attribute Key conforming to the "url.extension"
- // semantic conventions. It represents the file extension extracted from the
- // `url.full`, excluding the leading dot.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "png", "gz"
- // Note: The file extension is only set if it exists, as not every url has a
- // file extension. When the file name has multiple extensions `example.tar.gz`,
- // only the last one should be captured `gz`, not `tar.gz`.
- URLExtensionKey = attribute.Key("url.extension")
-
- // URLFragmentKey is the attribute Key conforming to the "url.fragment" semantic
- // conventions. It represents the [URI fragment] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "SemConv"
- //
- // [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5
- URLFragmentKey = attribute.Key("url.fragment")
-
- // URLFullKey is the attribute Key conforming to the "url.full" semantic
- // conventions. It represents the absolute URL describing a network resource
- // according to [RFC3986].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", "//localhost"
- // Note: For network calls, URL usually has
- // `scheme://host[:port][path][?query][#fragment]` format, where the fragment
- // is not transmitted over HTTP, but if it is known, it SHOULD be included
- // nevertheless.
- //
- // `url.full` MUST NOT contain credentials passed via URL in form of
- // `https://username:password@www.example.com/`.
- // In such case username and password SHOULD be redacted and attribute's value
- // SHOULD be `https://REDACTED:REDACTED@www.example.com/`.
- //
- // `url.full` SHOULD capture the absolute URL when it is available (or can be
- // reconstructed).
- //
- // Sensitive content provided in `url.full` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- //
- // Query string values for the following keys SHOULD be redacted by default and
- // replaced by the
- // value `REDACTED`:
- //
- // - [`AWSAccessKeyId`]
- // - [`Signature`]
- // - [`sig`]
- // - [`X-Goog-Signature`]
- //
- // This list is subject to change over time.
- //
- // Matching of query parameter keys against the sensitive list SHOULD be
- // case-sensitive.
- //
- //
- // Instrumentation MAY provide a way to override this list via declarative
- // configuration.
- // If so, it SHOULD use the `sensitive_query_parameters` property
- // (an array of case-sensitive strings with minimum items 0) under
- // `.instrumentation/development.general.sanitization.url`.
- // This list is a full override of the default sensitive query parameter keys,
- // it is not a list of keys in addition to the defaults.
- //
- // When a query string value is redacted, the query string key SHOULD still be
- // preserved, e.g.
- // `https://www.example.com/path?color=blue&sig=REDACTED`.
- //
- // [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986
- // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token
- // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls
- URLFullKey = attribute.Key("url.full")
-
- // URLOriginalKey is the attribute Key conforming to the "url.original" semantic
- // conventions. It represents the unmodified original URL as seen in the event
- // source.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv",
- // "search?q=OpenTelemetry"
- // Note: In network monitoring, the observed URL may be a full URL, whereas in
- // access logs, the URL is often just represented as a path. This field is meant
- // to represent the URL as it was observed, complete or not.
- // `url.original` might contain credentials passed via URL in form of
- // `https://username:password@www.example.com/`. In such case password and
- // username SHOULD NOT be redacted and attribute's value SHOULD remain the same.
- URLOriginalKey = attribute.Key("url.original")
-
- // URLPathKey is the attribute Key conforming to the "url.path" semantic
- // conventions. It represents the [URI path] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "/search"
- // Note: Sensitive content provided in `url.path` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- // [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3
- URLPathKey = attribute.Key("url.path")
-
- // URLPortKey is the attribute Key conforming to the "url.port" semantic
- // conventions. It represents the port extracted from the `url.full`.
- //
- // Type: int
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: 443
- URLPortKey = attribute.Key("url.port")
-
- // URLQueryKey is the attribute Key conforming to the "url.query" semantic
- // conventions. It represents the [URI query] component.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "q=OpenTelemetry"
- // Note: Sensitive content provided in `url.query` SHOULD be scrubbed when
- // instrumentations can identify it.
- //
- //
- // Query string values for the following keys SHOULD be redacted by default and
- // replaced by the value `REDACTED`:
- //
- // - [`AWSAccessKeyId`]
- // - [`Signature`]
- // - [`sig`]
- // - [`X-Goog-Signature`]
- //
- // This list is subject to change over time.
- //
- // Matching of query parameter keys against the sensitive list SHOULD be
- // case-sensitive.
- //
- // Instrumentation MAY provide a way to override this list via declarative
- // configuration.
- // If so, it SHOULD use the `sensitive_query_parameters` property
- // (an array of case-sensitive strings with minimum items 0) under
- // `.instrumentation/development.general.sanitization.url`.
- // This list is a full override of the default sensitive query parameter keys,
- // it is not a list of keys in addition to the defaults.
- //
- // When a query string value is redacted, the query string key SHOULD still be
- // preserved, e.g.
- // `q=OpenTelemetry&sig=REDACTED`.
- //
- // [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4
- // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
- // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token
- // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls
- URLQueryKey = attribute.Key("url.query")
-
- // URLRegisteredDomainKey is the attribute Key conforming to the
- // "url.registered_domain" semantic conventions. It represents the highest
- // registered url domain, stripped of the subdomain.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "example.com", "foo.co.uk"
- // Note: This value can be determined precisely with the [public suffix list].
- // For example, the registered domain for `foo.example.com` is `example.com`.
- // Trying to approximate this by simply taking the last two labels will not work
- // well for TLDs such as `co.uk`.
- //
- // [public suffix list]: https://publicsuffix.org/
- URLRegisteredDomainKey = attribute.Key("url.registered_domain")
-
- // URLSchemeKey is the attribute Key conforming to the "url.scheme" semantic
- // conventions. It represents the [URI scheme] component identifying the used
- // protocol.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "https", "ftp", "telnet"
- //
- // [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1
- URLSchemeKey = attribute.Key("url.scheme")
-
- // URLSubdomainKey is the attribute Key conforming to the "url.subdomain"
- // semantic conventions. It represents the subdomain portion of a fully
- // qualified domain name includes all of the names except the host name under
- // the registered_domain. In a partially qualified domain, or if the
- // qualification level of the full name cannot be determined, subdomain contains
- // all of the names below the registered domain.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "east", "sub2.sub1"
- // Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the
- // domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the
- // subdomain field should contain `sub2.sub1`, with no trailing period.
- URLSubdomainKey = attribute.Key("url.subdomain")
-
- // URLTemplateKey is the attribute Key conforming to the "url.template" semantic
- // conventions. It represents the low-cardinality template of an
- // [absolute path reference].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "/users/{id}", "/users/:id", "/users?id={id}"
- //
- // [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
- URLTemplateKey = attribute.Key("url.template")
-
- // URLTopLevelDomainKey is the attribute Key conforming to the
- // "url.top_level_domain" semantic conventions. It represents the effective top
- // level domain (eTLD), also known as the domain suffix, is the last part of the
- // domain name. For example, the top level domain for example.com is `com`.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "com", "co.uk"
- // Note: This value can be determined precisely with the [public suffix list].
- //
- // [public suffix list]: https://publicsuffix.org/
- URLTopLevelDomainKey = attribute.Key("url.top_level_domain")
-)
-
-// URLDomain returns an attribute KeyValue conforming to the "url.domain"
-// semantic conventions. It represents the domain extracted from the `url.full`,
-// such as "opentelemetry.io".
-func URLDomain(val string) attribute.KeyValue {
- return URLDomainKey.String(val)
-}
-
-// URLExtension returns an attribute KeyValue conforming to the "url.extension"
-// semantic conventions. It represents the file extension extracted from the
-// `url.full`, excluding the leading dot.
-func URLExtension(val string) attribute.KeyValue {
- return URLExtensionKey.String(val)
-}
-
-// URLFragment returns an attribute KeyValue conforming to the "url.fragment"
-// semantic conventions. It represents the [URI fragment] component.
-//
-// [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5
-func URLFragment(val string) attribute.KeyValue {
- return URLFragmentKey.String(val)
-}
-
-// URLFull returns an attribute KeyValue conforming to the "url.full" semantic
-// conventions. It represents the absolute URL describing a network resource
-// according to [RFC3986].
-//
-// [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986
-func URLFull(val string) attribute.KeyValue {
- return URLFullKey.String(val)
-}
-
-// URLOriginal returns an attribute KeyValue conforming to the "url.original"
-// semantic conventions. It represents the unmodified original URL as seen in the
-// event source.
-func URLOriginal(val string) attribute.KeyValue {
- return URLOriginalKey.String(val)
-}
-
-// URLPath returns an attribute KeyValue conforming to the "url.path" semantic
-// conventions. It represents the [URI path] component.
-//
-// [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3
-func URLPath(val string) attribute.KeyValue {
- return URLPathKey.String(val)
-}
-
-// URLPort returns an attribute KeyValue conforming to the "url.port" semantic
-// conventions. It represents the port extracted from the `url.full`.
-func URLPort(val int) attribute.KeyValue {
- return URLPortKey.Int(val)
-}
-
-// URLQuery returns an attribute KeyValue conforming to the "url.query" semantic
-// conventions. It represents the [URI query] component.
-//
-// [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4
-func URLQuery(val string) attribute.KeyValue {
- return URLQueryKey.String(val)
-}
-
-// URLRegisteredDomain returns an attribute KeyValue conforming to the
-// "url.registered_domain" semantic conventions. It represents the highest
-// registered url domain, stripped of the subdomain.
-func URLRegisteredDomain(val string) attribute.KeyValue {
- return URLRegisteredDomainKey.String(val)
-}
-
-// URLScheme returns an attribute KeyValue conforming to the "url.scheme"
-// semantic conventions. It represents the [URI scheme] component identifying the
-// used protocol.
-//
-// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1
-func URLScheme(val string) attribute.KeyValue {
- return URLSchemeKey.String(val)
-}
-
-// URLSubdomain returns an attribute KeyValue conforming to the "url.subdomain"
-// semantic conventions. It represents the subdomain portion of a fully qualified
-// domain name includes all of the names except the host name under the
-// registered_domain. In a partially qualified domain, or if the qualification
-// level of the full name cannot be determined, subdomain contains all of the
-// names below the registered domain.
-func URLSubdomain(val string) attribute.KeyValue {
- return URLSubdomainKey.String(val)
-}
-
-// URLTemplate returns an attribute KeyValue conforming to the "url.template"
-// semantic conventions. It represents the low-cardinality template of an
-// [absolute path reference].
-//
-// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
-func URLTemplate(val string) attribute.KeyValue {
- return URLTemplateKey.String(val)
-}
-
-// URLTopLevelDomain returns an attribute KeyValue conforming to the
-// "url.top_level_domain" semantic conventions. It represents the effective top
-// level domain (eTLD), also known as the domain suffix, is the last part of the
-// domain name. For example, the top level domain for example.com is `com`.
-func URLTopLevelDomain(val string) attribute.KeyValue {
- return URLTopLevelDomainKey.String(val)
-}
-
-// Namespace: user
-const (
- // UserEmailKey is the attribute Key conforming to the "user.email" semantic
- // conventions. It represents the user email address.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "a.einstein@example.com"
- UserEmailKey = attribute.Key("user.email")
-
- // UserFullNameKey is the attribute Key conforming to the "user.full_name"
- // semantic conventions. It represents the user's full name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Albert Einstein"
- UserFullNameKey = attribute.Key("user.full_name")
-
- // UserHashKey is the attribute Key conforming to the "user.hash" semantic
- // conventions. It represents the unique user hash to correlate information for
- // a user in anonymized form.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "364fc68eaf4c8acec74a4e52d7d1feaa"
- // Note: Useful if `user.id` or `user.name` contain confidential information and
- // cannot be used.
- UserHashKey = attribute.Key("user.hash")
-
- // UserIDKey is the attribute Key conforming to the "user.id" semantic
- // conventions. It represents the unique identifier of the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "S-1-5-21-202424912787-2692429404-2351956786-1000"
- UserIDKey = attribute.Key("user.id")
-
- // UserNameKey is the attribute Key conforming to the "user.name" semantic
- // conventions. It represents the short name or login/username of the user.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "a.einstein"
- UserNameKey = attribute.Key("user.name")
-
- // UserRolesKey is the attribute Key conforming to the "user.roles" semantic
- // conventions. It represents the array of user roles at the time of the event.
- //
- // Type: string[]
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "admin", "reporting_user"
- UserRolesKey = attribute.Key("user.roles")
-)
-
-// UserEmail returns an attribute KeyValue conforming to the "user.email"
-// semantic conventions. It represents the user email address.
-func UserEmail(val string) attribute.KeyValue {
- return UserEmailKey.String(val)
-}
-
-// UserFullName returns an attribute KeyValue conforming to the "user.full_name"
-// semantic conventions. It represents the user's full name.
-func UserFullName(val string) attribute.KeyValue {
- return UserFullNameKey.String(val)
-}
-
-// UserHash returns an attribute KeyValue conforming to the "user.hash" semantic
-// conventions. It represents the unique user hash to correlate information for a
-// user in anonymized form.
-func UserHash(val string) attribute.KeyValue {
- return UserHashKey.String(val)
-}
-
-// UserID returns an attribute KeyValue conforming to the "user.id" semantic
-// conventions. It represents the unique identifier of the user.
-func UserID(val string) attribute.KeyValue {
- return UserIDKey.String(val)
-}
-
-// UserName returns an attribute KeyValue conforming to the "user.name" semantic
-// conventions. It represents the short name or login/username of the user.
-func UserName(val string) attribute.KeyValue {
- return UserNameKey.String(val)
-}
-
-// UserRoles returns an attribute KeyValue conforming to the "user.roles"
-// semantic conventions. It represents the array of user roles at the time of the
-// event.
-func UserRoles(val ...string) attribute.KeyValue {
- return UserRolesKey.StringSlice(val)
-}
-
-// Namespace: user_agent
-const (
- // UserAgentNameKey is the attribute Key conforming to the "user_agent.name"
- // semantic conventions. It represents the name of the user-agent extracted from
- // original. Usually refers to the browser's name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Safari", "YourApp"
- // Note: [Example] of extracting browser's name from original string. In the
- // case of using a user-agent for non-browser products, such as microservices
- // with multiple names/versions inside the `user_agent.original`, the most
- // significant name SHOULD be selected. In such a scenario it should align with
- // `user_agent.version`
- //
- // [Example]: https://uaparser.dev/#demo
- UserAgentNameKey = attribute.Key("user_agent.name")
-
- // UserAgentOriginalKey is the attribute Key conforming to the
- // "user_agent.original" semantic conventions. It represents the value of the
- // [HTTP User-Agent] header sent by the client.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Stable
- //
- // Examples: "CERN-LineMode/2.15 libwww/2.17b3", "Mozilla/5.0 (iPhone; CPU
- // iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)
- // Version/14.1.2 Mobile/15E148 Safari/604.1", "YourApp/1.0.0
- // grpc-java-okhttp/1.27.2"
- //
- // [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent
- UserAgentOriginalKey = attribute.Key("user_agent.original")
-
- // UserAgentOSNameKey is the attribute Key conforming to the
- // "user_agent.os.name" semantic conventions. It represents the human readable
- // operating system name.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "iOS", "Android", "Ubuntu"
- // Note: For mapping user agent strings to OS names, libraries such as
- // [ua-parser] can be utilized.
- //
- // [ua-parser]: https://github.com/ua-parser
- UserAgentOSNameKey = attribute.Key("user_agent.os.name")
-
- // UserAgentOSVersionKey is the attribute Key conforming to the
- // "user_agent.os.version" semantic conventions. It represents the version
- // string of the operating system as defined in [Version Attributes].
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "14.2.1", "18.04.1"
- // Note: For mapping user agent strings to OS versions, libraries such as
- // [ua-parser] can be utilized.
- //
- // [Version Attributes]: /docs/resource/README.md#version-attributes
- // [ua-parser]: https://github.com/ua-parser
- UserAgentOSVersionKey = attribute.Key("user_agent.os.version")
-
- // UserAgentSyntheticTypeKey is the attribute Key conforming to the
- // "user_agent.synthetic.type" semantic conventions. It represents the specifies
- // the category of synthetic traffic, such as tests or bots.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // Note: This attribute MAY be derived from the contents of the
- // `user_agent.original` attribute. Components that populate the attribute are
- // responsible for determining what they consider to be synthetic bot or test
- // traffic. This attribute can either be set for self-identification purposes,
- // or on telemetry detected to be generated as a result of a synthetic request.
- // This attribute is useful for distinguishing between genuine client traffic
- // and synthetic traffic generated by bots or tests.
- UserAgentSyntheticTypeKey = attribute.Key("user_agent.synthetic.type")
-
- // UserAgentVersionKey is the attribute Key conforming to the
- // "user_agent.version" semantic conventions. It represents the version of the
- // user-agent extracted from original. Usually refers to the browser's version.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "14.1.2", "1.0.0"
- // Note: [Example] of extracting browser's version from original string. In the
- // case of using a user-agent for non-browser products, such as microservices
- // with multiple names/versions inside the `user_agent.original`, the most
- // significant version SHOULD be selected. In such a scenario it should align
- // with `user_agent.name`
- //
- // [Example]: https://uaparser.dev/#demo
- UserAgentVersionKey = attribute.Key("user_agent.version")
-)
-
-// UserAgentName returns an attribute KeyValue conforming to the
-// "user_agent.name" semantic conventions. It represents the name of the
-// user-agent extracted from original. Usually refers to the browser's name.
-func UserAgentName(val string) attribute.KeyValue {
- return UserAgentNameKey.String(val)
-}
-
-// UserAgentOriginal returns an attribute KeyValue conforming to the
-// "user_agent.original" semantic conventions. It represents the value of the
-// [HTTP User-Agent] header sent by the client.
-//
-// [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent
-func UserAgentOriginal(val string) attribute.KeyValue {
- return UserAgentOriginalKey.String(val)
-}
-
-// UserAgentOSName returns an attribute KeyValue conforming to the
-// "user_agent.os.name" semantic conventions. It represents the human readable
-// operating system name.
-func UserAgentOSName(val string) attribute.KeyValue {
- return UserAgentOSNameKey.String(val)
-}
-
-// UserAgentOSVersion returns an attribute KeyValue conforming to the
-// "user_agent.os.version" semantic conventions. It represents the version string
-// of the operating system as defined in [Version Attributes].
-//
-// [Version Attributes]: /docs/resource/README.md#version-attributes
-func UserAgentOSVersion(val string) attribute.KeyValue {
- return UserAgentOSVersionKey.String(val)
-}
-
-// UserAgentVersion returns an attribute KeyValue conforming to the
-// "user_agent.version" semantic conventions. It represents the version of the
-// user-agent extracted from original. Usually refers to the browser's version.
-func UserAgentVersion(val string) attribute.KeyValue {
- return UserAgentVersionKey.String(val)
-}
-
-// Enum values for user_agent.synthetic.type
-var (
- // Bot source.
- // Stability: development
- UserAgentSyntheticTypeBot = UserAgentSyntheticTypeKey.String("bot")
- // Synthetic test source.
- // Stability: development
- UserAgentSyntheticTypeTest = UserAgentSyntheticTypeKey.String("test")
-)
-
-// Namespace: vcs
-const (
- // VCSChangeIDKey is the attribute Key conforming to the "vcs.change.id"
- // semantic conventions. It represents the ID of the change (pull request/merge
- // request/changelist) if applicable. This is usually a unique (within
- // repository) identifier generated by the VCS system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "123"
- VCSChangeIDKey = attribute.Key("vcs.change.id")
-
- // VCSChangeStateKey is the attribute Key conforming to the "vcs.change.state"
- // semantic conventions. It represents the state of the change (pull
- // request/merge request/changelist).
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "open", "closed", "merged"
- VCSChangeStateKey = attribute.Key("vcs.change.state")
-
- // VCSChangeTitleKey is the attribute Key conforming to the "vcs.change.title"
- // semantic conventions. It represents the human readable title of the change
- // (pull request/merge request/changelist). This title is often a brief summary
- // of the change and may get merged in to a ref as the commit summary.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "Fixes broken thing", "feat: add my new feature", "[chore] update
- // dependency"
- VCSChangeTitleKey = attribute.Key("vcs.change.title")
-
- // VCSLineChangeTypeKey is the attribute Key conforming to the
- // "vcs.line_change.type" semantic conventions. It represents the type of line
- // change being measured on a branch or change.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "added", "removed"
- VCSLineChangeTypeKey = attribute.Key("vcs.line_change.type")
-
- // VCSOwnerNameKey is the attribute Key conforming to the "vcs.owner.name"
- // semantic conventions. It represents the group owner within the version
- // control system.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-org", "myteam", "business-unit"
- VCSOwnerNameKey = attribute.Key("vcs.owner.name")
-
- // VCSProviderNameKey is the attribute Key conforming to the "vcs.provider.name"
- // semantic conventions. It represents the name of the version control system
- // provider.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "github", "gitlab", "gitea", "bitbucket"
- VCSProviderNameKey = attribute.Key("vcs.provider.name")
-
- // VCSRefBaseNameKey is the attribute Key conforming to the "vcs.ref.base.name"
- // semantic conventions. It represents the name of the [reference] such as
- // **branch** or **tag** in the repository.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-feature-branch", "tag-1-test"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefBaseNameKey = attribute.Key("vcs.ref.base.name")
-
- // VCSRefBaseRevisionKey is the attribute Key conforming to the
- // "vcs.ref.base.revision" semantic conventions. It represents the revision,
- // literally [revised version], The revision most often refers to a commit
- // object in Git, or a revision number in SVN.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc",
- // "main", "123", "HEAD"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits. The
- // revision can be a full [hash value (see
- // glossary)],
- // of the recorded change to a ref within a repository pointing to a
- // commit [commit] object. It does
- // not necessarily have to be a hash; it can simply define a [revision
- // number]
- // which is an integer that is monotonically increasing. In cases where
- // it is identical to the `ref.base.name`, it SHOULD still be included.
- // It is up to the implementer to decide which value to set as the
- // revision based on the VCS system and situational context.
- //
- // [revised version]: https://www.merriam-webster.com/dictionary/revision
- // [hash value (see
- // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [commit]: https://git-scm.com/docs/git-commit
- // [revision
- // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html
- VCSRefBaseRevisionKey = attribute.Key("vcs.ref.base.revision")
-
- // VCSRefBaseTypeKey is the attribute Key conforming to the "vcs.ref.base.type"
- // semantic conventions. It represents the type of the [reference] in the
- // repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- // Note: `base` refers to the starting point of a change. For example, `main`
- // would be the base reference of type branch if you've created a new
- // reference of type branch from it and created new commits.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefBaseTypeKey = attribute.Key("vcs.ref.base.type")
-
- // VCSRefHeadNameKey is the attribute Key conforming to the "vcs.ref.head.name"
- // semantic conventions. It represents the name of the [reference] such as
- // **branch** or **tag** in the repository.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "my-feature-branch", "tag-1-test"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefHeadNameKey = attribute.Key("vcs.ref.head.name")
-
- // VCSRefHeadRevisionKey is the attribute Key conforming to the
- // "vcs.ref.head.revision" semantic conventions. It represents the revision,
- // literally [revised version], The revision most often refers to a commit
- // object in Git, or a revision number in SVN.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc",
- // "main", "123", "HEAD"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.The revision can be a full [hash value (see
- // glossary)],
- // of the recorded change to a ref within a repository pointing to a
- // commit [commit] object. It does
- // not necessarily have to be a hash; it can simply define a [revision
- // number]
- // which is an integer that is monotonically increasing. In cases where
- // it is identical to the `ref.head.name`, it SHOULD still be included.
- // It is up to the implementer to decide which value to set as the
- // revision based on the VCS system and situational context.
- //
- // [revised version]: https://www.merriam-webster.com/dictionary/revision
- // [hash value (see
- // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf
- // [commit]: https://git-scm.com/docs/git-commit
- // [revision
- // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html
- VCSRefHeadRevisionKey = attribute.Key("vcs.ref.head.revision")
-
- // VCSRefHeadTypeKey is the attribute Key conforming to the "vcs.ref.head.type"
- // semantic conventions. It represents the type of the [reference] in the
- // repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- // Note: `head` refers to where you are right now; the current reference at a
- // given time.
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefHeadTypeKey = attribute.Key("vcs.ref.head.type")
-
- // VCSRefTypeKey is the attribute Key conforming to the "vcs.ref.type" semantic
- // conventions. It represents the type of the [reference] in the repository.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "branch", "tag"
- //
- // [reference]: https://git-scm.com/docs/gitglossary#def_ref
- VCSRefTypeKey = attribute.Key("vcs.ref.type")
-
- // VCSRepositoryNameKey is the attribute Key conforming to the
- // "vcs.repository.name" semantic conventions. It represents the human readable
- // name of the repository. It SHOULD NOT include any additional identifier like
- // Group/SubGroup in GitLab or organization in GitHub.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "semantic-conventions", "my-cool-repo"
- // Note: Due to it only being the name, it can clash with forks of the same
- // repository if collecting telemetry across multiple orgs or groups in
- // the same backends.
- VCSRepositoryNameKey = attribute.Key("vcs.repository.name")
-
- // VCSRepositoryURLFullKey is the attribute Key conforming to the
- // "vcs.repository.url.full" semantic conventions. It represents the
- // [canonical URL] of the repository providing the complete HTTP(S) address in
- // order to locate and identify the repository through a browser.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples:
- // "https://github.com/opentelemetry/open-telemetry-collector-contrib",
- // "https://gitlab.com/my-org/my-project/my-projects-project/repo"
- // Note: In Git Version Control Systems, the canonical URL SHOULD NOT include
- // the `.git` extension.
- //
- // [canonical URL]: https://support.google.com/webmasters/answer/10347851
- VCSRepositoryURLFullKey = attribute.Key("vcs.repository.url.full")
-
- // VCSRevisionDeltaDirectionKey is the attribute Key conforming to the
- // "vcs.revision_delta.direction" semantic conventions. It represents the type
- // of revision comparison.
- //
- // Type: Enum
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "ahead", "behind"
- VCSRevisionDeltaDirectionKey = attribute.Key("vcs.revision_delta.direction")
-)
-
-// VCSChangeID returns an attribute KeyValue conforming to the "vcs.change.id"
-// semantic conventions. It represents the ID of the change (pull request/merge
-// request/changelist) if applicable. This is usually a unique (within
-// repository) identifier generated by the VCS system.
-func VCSChangeID(val string) attribute.KeyValue {
- return VCSChangeIDKey.String(val)
-}
-
-// VCSChangeTitle returns an attribute KeyValue conforming to the
-// "vcs.change.title" semantic conventions. It represents the human readable
-// title of the change (pull request/merge request/changelist). This title is
-// often a brief summary of the change and may get merged in to a ref as the
-// commit summary.
-func VCSChangeTitle(val string) attribute.KeyValue {
- return VCSChangeTitleKey.String(val)
-}
-
-// VCSOwnerName returns an attribute KeyValue conforming to the "vcs.owner.name"
-// semantic conventions. It represents the group owner within the version control
-// system.
-func VCSOwnerName(val string) attribute.KeyValue {
- return VCSOwnerNameKey.String(val)
-}
-
-// VCSRefBaseName returns an attribute KeyValue conforming to the
-// "vcs.ref.base.name" semantic conventions. It represents the name of the
-// [reference] such as **branch** or **tag** in the repository.
-//
-// [reference]: https://git-scm.com/docs/gitglossary#def_ref
-func VCSRefBaseName(val string) attribute.KeyValue {
- return VCSRefBaseNameKey.String(val)
-}
-
-// VCSRefBaseRevision returns an attribute KeyValue conforming to the
-// "vcs.ref.base.revision" semantic conventions. It represents the revision,
-// literally [revised version], The revision most often refers to a commit object
-// in Git, or a revision number in SVN.
-//
-// [revised version]: https://www.merriam-webster.com/dictionary/revision
-func VCSRefBaseRevision(val string) attribute.KeyValue {
- return VCSRefBaseRevisionKey.String(val)
-}
-
-// VCSRefHeadName returns an attribute KeyValue conforming to the
-// "vcs.ref.head.name" semantic conventions. It represents the name of the
-// [reference] such as **branch** or **tag** in the repository.
-//
-// [reference]: https://git-scm.com/docs/gitglossary#def_ref
-func VCSRefHeadName(val string) attribute.KeyValue {
- return VCSRefHeadNameKey.String(val)
-}
-
-// VCSRefHeadRevision returns an attribute KeyValue conforming to the
-// "vcs.ref.head.revision" semantic conventions. It represents the revision,
-// literally [revised version], The revision most often refers to a commit object
-// in Git, or a revision number in SVN.
-//
-// [revised version]: https://www.merriam-webster.com/dictionary/revision
-func VCSRefHeadRevision(val string) attribute.KeyValue {
- return VCSRefHeadRevisionKey.String(val)
-}
-
-// VCSRepositoryName returns an attribute KeyValue conforming to the
-// "vcs.repository.name" semantic conventions. It represents the human readable
-// name of the repository. It SHOULD NOT include any additional identifier like
-// Group/SubGroup in GitLab or organization in GitHub.
-func VCSRepositoryName(val string) attribute.KeyValue {
- return VCSRepositoryNameKey.String(val)
-}
-
-// VCSRepositoryURLFull returns an attribute KeyValue conforming to the
-// "vcs.repository.url.full" semantic conventions. It represents the
-// [canonical URL] of the repository providing the complete HTTP(S) address in
-// order to locate and identify the repository through a browser.
-//
-// [canonical URL]: https://support.google.com/webmasters/answer/10347851
-func VCSRepositoryURLFull(val string) attribute.KeyValue {
- return VCSRepositoryURLFullKey.String(val)
-}
-
-// Enum values for vcs.change.state
-var (
- // Open means the change is currently active and under review. It hasn't been
- // merged into the target branch yet, and it's still possible to make changes or
- // add comments.
- // Stability: development
- VCSChangeStateOpen = VCSChangeStateKey.String("open")
- // WIP (work-in-progress, draft) means the change is still in progress and not
- // yet ready for a full review. It might still undergo significant changes.
- // Stability: development
- VCSChangeStateWip = VCSChangeStateKey.String("wip")
- // Closed means the merge request has been closed without merging. This can
- // happen for various reasons, such as the changes being deemed unnecessary, the
- // issue being resolved in another way, or the author deciding to withdraw the
- // request.
- // Stability: development
- VCSChangeStateClosed = VCSChangeStateKey.String("closed")
- // Merged indicates that the change has been successfully integrated into the
- // target codebase.
- // Stability: development
- VCSChangeStateMerged = VCSChangeStateKey.String("merged")
-)
-
-// Enum values for vcs.line_change.type
-var (
- // How many lines were added.
- // Stability: development
- VCSLineChangeTypeAdded = VCSLineChangeTypeKey.String("added")
- // How many lines were removed.
- // Stability: development
- VCSLineChangeTypeRemoved = VCSLineChangeTypeKey.String("removed")
-)
-
-// Enum values for vcs.provider.name
-var (
- // [GitHub]
- // Stability: development
- //
- // [GitHub]: https://github.com
- VCSProviderNameGithub = VCSProviderNameKey.String("github")
- // [GitLab]
- // Stability: development
- //
- // [GitLab]: https://gitlab.com
- VCSProviderNameGitlab = VCSProviderNameKey.String("gitlab")
- // [Gitea]
- // Stability: development
- //
- // [Gitea]: https://gitea.io
- VCSProviderNameGitea = VCSProviderNameKey.String("gitea")
- // [Bitbucket]
- // Stability: development
- //
- // [Bitbucket]: https://bitbucket.org
- VCSProviderNameBitbucket = VCSProviderNameKey.String("bitbucket")
-)
-
-// Enum values for vcs.ref.base.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefBaseTypeBranch = VCSRefBaseTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefBaseTypeTag = VCSRefBaseTypeKey.String("tag")
-)
-
-// Enum values for vcs.ref.head.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefHeadTypeBranch = VCSRefHeadTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefHeadTypeTag = VCSRefHeadTypeKey.String("tag")
-)
-
-// Enum values for vcs.ref.type
-var (
- // [branch]
- // Stability: development
- //
- // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch
- VCSRefTypeBranch = VCSRefTypeKey.String("branch")
- // [tag]
- // Stability: development
- //
- // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag
- VCSRefTypeTag = VCSRefTypeKey.String("tag")
-)
-
-// Enum values for vcs.revision_delta.direction
-var (
- // How many revisions the change is behind the target ref.
- // Stability: development
- VCSRevisionDeltaDirectionBehind = VCSRevisionDeltaDirectionKey.String("behind")
- // How many revisions the change is ahead of the target ref.
- // Stability: development
- VCSRevisionDeltaDirectionAhead = VCSRevisionDeltaDirectionKey.String("ahead")
-)
-
-// Namespace: webengine
-const (
- // WebEngineDescriptionKey is the attribute Key conforming to the
- // "webengine.description" semantic conventions. It represents the additional
- // description of the web engine (e.g. detailed version and edition
- // information).
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) -
- // 2.2.2.Final"
- WebEngineDescriptionKey = attribute.Key("webengine.description")
-
- // WebEngineNameKey is the attribute Key conforming to the "webengine.name"
- // semantic conventions. It represents the name of the web engine.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "WildFly"
- WebEngineNameKey = attribute.Key("webengine.name")
-
- // WebEngineVersionKey is the attribute Key conforming to the
- // "webengine.version" semantic conventions. It represents the version of the
- // web engine.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "21.0.0"
- WebEngineVersionKey = attribute.Key("webengine.version")
-)
-
-// WebEngineDescription returns an attribute KeyValue conforming to the
-// "webengine.description" semantic conventions. It represents the additional
-// description of the web engine (e.g. detailed version and edition information).
-func WebEngineDescription(val string) attribute.KeyValue {
- return WebEngineDescriptionKey.String(val)
-}
-
-// WebEngineName returns an attribute KeyValue conforming to the "webengine.name"
-// semantic conventions. It represents the name of the web engine.
-func WebEngineName(val string) attribute.KeyValue {
- return WebEngineNameKey.String(val)
-}
-
-// WebEngineVersion returns an attribute KeyValue conforming to the
-// "webengine.version" semantic conventions. It represents the version of the web
-// engine.
-func WebEngineVersion(val string) attribute.KeyValue {
- return WebEngineVersionKey.String(val)
-}
-
-// Namespace: zos
-const (
- // ZOSSmfIDKey is the attribute Key conforming to the "zos.smf.id" semantic
- // conventions. It represents the System Management Facility (SMF) Identifier
- // uniquely identified a z/OS system within a SYSPLEX or mainframe environment
- // and is used for system and performance analysis.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "SYS1"
- ZOSSmfIDKey = attribute.Key("zos.smf.id")
-
- // ZOSSysplexNameKey is the attribute Key conforming to the "zos.sysplex.name"
- // semantic conventions. It represents the name of the SYSPLEX to which the z/OS
- // system belongs too.
- //
- // Type: string
- // RequirementLevel: Recommended
- // Stability: Development
- //
- // Examples: "SYSPLEX1"
- ZOSSysplexNameKey = attribute.Key("zos.sysplex.name")
-)
-
-// ZOSSmfID returns an attribute KeyValue conforming to the "zos.smf.id" semantic
-// conventions. It represents the System Management Facility (SMF) Identifier
-// uniquely identified a z/OS system within a SYSPLEX or mainframe environment
-// and is used for system and performance analysis.
-func ZOSSmfID(val string) attribute.KeyValue {
- return ZOSSmfIDKey.String(val)
-}
-
-// ZOSSysplexName returns an attribute KeyValue conforming to the
-// "zos.sysplex.name" semantic conventions. It represents the name of the SYSPLEX
-// to which the z/OS system belongs too.
-func ZOSSysplexName(val string) attribute.KeyValue {
- return ZOSSysplexNameKey.String(val)
-}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/doc.go
deleted file mode 100644
index 846bd473..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/doc.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Package semconv implements OpenTelemetry semantic conventions.
-//
-// OpenTelemetry semantic conventions are agreed standardized naming
-// patterns for OpenTelemetry things. This package represents the v1.41.0
-// version of the OpenTelemetry semantic conventions.
-package semconv
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/error_type.go b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/error_type.go
deleted file mode 100644
index 5d8eff22..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/error_type.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv
-
-import (
- "errors"
- "fmt"
- "reflect"
-
- "go.opentelemetry.io/otel/attribute"
-)
-
-// ErrorType returns an [attribute.KeyValue] identifying the error type of err.
-//
-// If err is nil, the returned attribute has the default value
-// [ErrorTypeOther].
-//
-// If err or one of the errors in its chain has the method
-//
-// ErrorType() string
-//
-// the returned attribute has that method's return value. If multiple errors in
-// the chain implement this method, the value from the first match found by
-// [errors.As] is used. Otherwise, the returned attribute has a value derived
-// from the concrete type of err after unwrapping any wrappers created with
-// [fmt.Errorf].
-//
-// The key of the returned attribute is [ErrorTypeKey].
-func ErrorType(err error) attribute.KeyValue {
- if err == nil {
- return ErrorTypeOther
- }
-
- return ErrorTypeKey.String(errorType(err))
-}
-
-func errorType(err error) string {
- var s string
- if et, ok := err.(interface{ ErrorType() string }); ok {
- // Fast path: check the top-level error first.
- s = et.ErrorType()
- } else {
- // Fallback: search the error chain for an ErrorType method.
- var et interface{ ErrorType() string }
- if errors.As(err, &et) {
- // Prioritize the ErrorType method if available.
- s = et.ErrorType()
- }
- }
- if s == "" {
- // Fallback to reflection if the ErrorType method is not supported or
- // returns an empty value.
-
- t := reflect.TypeOf(unwrapFmtWrapped(err))
- pkg, name := t.PkgPath(), t.Name()
- if pkg != "" && name != "" {
- s = pkg + "." + name
- } else {
- // The type has no package path or name (predeclared, not-defined,
- // or alias for a not-defined type).
- //
- // This is not guaranteed to be unique, but is a best effort.
- s = t.String()
- }
- }
- return s
-}
-
-var fmtWrapErrorType = reflect.TypeOf(fmt.Errorf("wrapped: %w", errors.New("err")))
-
-func unwrapFmtWrapped(err error) error {
- for reflect.TypeOf(err) == fmtWrapErrorType {
- u := errors.Unwrap(err)
- if u == nil {
- return err // When the wrapped error is nil, use the concrete type of the wrapper.
- }
- err = u
- }
- return err
-}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/exception.go
deleted file mode 100644
index 6c9b05ad..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/exception.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv
-
-const (
- // ExceptionEventName is the name of the Span event representing an exception.
- ExceptionEventName = "exception"
-)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/schema.go
deleted file mode 100644
index 54f7cfa2..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/schema.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv
-
-// SchemaURL is the schema URL that matches the version of the semantic conventions
-// that this package defines. Semconv packages starting from v1.4.0 must declare
-// non-empty schema URL in the form https://opentelemetry.io/schemas/
-const SchemaURL = "https://opentelemetry.io/schemas/1.41.0"
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/goconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.43.0/goconv/metric.go
similarity index 100%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.41.0/goconv/metric.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.43.0/goconv/metric.go
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/httpconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.43.0/httpconv/metric.go
similarity index 100%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.41.0/httpconv/metric.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.43.0/httpconv/metric.go
index 734cf240..1eb8c9e2 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/httpconv/metric.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.43.0/httpconv/metric.go
@@ -438,13 +438,6 @@ func (m ClientConnectionDuration) RecordSet(ctx context.Context, val float64, se
m.Float64Histogram.Record(ctx, val, *o...)
}
-// AttrNetworkPeerAddress returns an optional attribute for the
-// "network.peer.address" semantic convention. It represents the peer address of
-// the network connection - IP address or Unix domain socket name.
-func (ClientConnectionDuration) AttrNetworkPeerAddress(val string) attribute.KeyValue {
- return attribute.String("network.peer.address", val)
-}
-
// AttrNetworkProtocolVersion returns an optional attribute for the
// "network.protocol.version" semantic convention. It represents the actual
// version of the protocol used for network communication.
@@ -452,6 +445,13 @@ func (ClientConnectionDuration) AttrNetworkProtocolVersion(val string) attribute
return attribute.String("network.protocol.version", val)
}
+// AttrNetworkPeerAddress returns an optional attribute for the
+// "network.peer.address" semantic convention. It represents the peer address of
+// the network connection - IP address or Unix domain socket name.
+func (ClientConnectionDuration) AttrNetworkPeerAddress(val string) attribute.KeyValue {
+ return attribute.String("network.peer.address", val)
+}
+
// AttrURLScheme returns an optional attribute for the "url.scheme" semantic
// convention. It represents the [URI scheme] component identifying the used
// protocol.
@@ -586,13 +586,6 @@ func (m ClientOpenConnections) AddSet(ctx context.Context, incr int64, set attri
m.Int64UpDownCounter.Add(ctx, incr, *o...)
}
-// AttrNetworkPeerAddress returns an optional attribute for the
-// "network.peer.address" semantic convention. It represents the peer address of
-// the network connection - IP address or Unix domain socket name.
-func (ClientOpenConnections) AttrNetworkPeerAddress(val string) attribute.KeyValue {
- return attribute.String("network.peer.address", val)
-}
-
// AttrNetworkProtocolVersion returns an optional attribute for the
// "network.protocol.version" semantic convention. It represents the actual
// version of the protocol used for network communication.
@@ -600,6 +593,13 @@ func (ClientOpenConnections) AttrNetworkProtocolVersion(val string) attribute.Ke
return attribute.String("network.protocol.version", val)
}
+// AttrNetworkPeerAddress returns an optional attribute for the
+// "network.peer.address" semantic convention. It represents the peer address of
+// the network connection - IP address or Unix domain socket name.
+func (ClientOpenConnections) AttrNetworkPeerAddress(val string) attribute.KeyValue {
+ return attribute.String("network.peer.address", val)
+}
+
// AttrURLScheme returns an optional attribute for the "url.scheme" semantic
// convention. It represents the [URI scheme] component identifying the used
// protocol.
@@ -689,13 +689,6 @@ func (ClientOpenConnectionsObservable) AttrServerPort(val int) attribute.KeyValu
return attribute.Int("server.port", val)
}
-// AttrNetworkPeerAddress returns an optional attribute for the
-// "network.peer.address" semantic convention. It represents the peer address of
-// the network connection - IP address or Unix domain socket name.
-func (ClientOpenConnectionsObservable) AttrNetworkPeerAddress(val string) attribute.KeyValue {
- return attribute.String("network.peer.address", val)
-}
-
// AttrNetworkProtocolVersion returns an optional attribute for the
// "network.protocol.version" semantic convention. It represents the actual
// version of the protocol used for network communication.
@@ -703,6 +696,13 @@ func (ClientOpenConnectionsObservable) AttrNetworkProtocolVersion(val string) at
return attribute.String("network.protocol.version", val)
}
+// AttrNetworkPeerAddress returns an optional attribute for the
+// "network.peer.address" semantic convention. It represents the peer address of
+// the network connection - IP address or Unix domain socket name.
+func (ClientOpenConnectionsObservable) AttrNetworkPeerAddress(val string) attribute.KeyValue {
+ return attribute.String("network.peer.address", val)
+}
+
// AttrURLScheme returns an optional attribute for the "url.scheme" semantic
// convention. It represents the [URI scheme] component identifying the used
// protocol.
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/otelconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.43.0/otelconv/metric.go
similarity index 94%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.41.0/otelconv/metric.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.43.0/otelconv/metric.go
index 367b5876..9eaf0fd9 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.41.0/otelconv/metric.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.43.0/otelconv/metric.go
@@ -187,6 +187,12 @@ func (SDKExporterLogExported) Description() string {
// non-rejected log records count as success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each log record MUST be counted exactly once per export operation:
+// intermediate failed attempts that are followed by a retry MUST NOT increment
+// the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterLogExported) Add(
ctx context.Context,
incr int64,
@@ -222,6 +228,12 @@ func (m SDKExporterLogExported) Add(
// non-rejected log records count as success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each log record MUST be counted exactly once per export operation:
+// intermediate failed attempts that are followed by a retry MUST NOT increment
+// the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterLogExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64Counter.Enabled(ctx) {
return
@@ -429,8 +441,10 @@ func (SDKExporterLogInflight) Description() string {
//
// All additional attrs passed are included in the recorded value.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Log records are counted as inflight from when they are passed to the exporter
+// until the export operation has concluded.
+// If the exporter retries failed export attempts, log records remain inflight
+// across all retry attempts and any backoff between them.
func (m SDKExporterLogInflight) Add(
ctx context.Context,
incr int64,
@@ -459,8 +473,10 @@ func (m SDKExporterLogInflight) Add(
// AddSet adds incr to the existing count for set.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Log records are counted as inflight from when they are passed to the exporter
+// until the export operation has concluded.
+// If the exporter retries failed export attempts, log records remain inflight
+// across all retry attempts and any backoff between them.
func (m SDKExporterLogInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64UpDownCounter.Enabled(ctx) {
return
@@ -662,6 +678,12 @@ func (SDKExporterMetricDataPointExported) Description() string {
// non-rejected data points count as success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each metric data point MUST be counted exactly once per export operation:
+// intermediate failed attempts that are followed by a retry MUST NOT increment
+// the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterMetricDataPointExported) Add(
ctx context.Context,
incr int64,
@@ -697,6 +719,12 @@ func (m SDKExporterMetricDataPointExported) Add(
// non-rejected data points count as success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each metric data point MUST be counted exactly once per export operation:
+// intermediate failed attempts that are followed by a retry MUST NOT increment
+// the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterMetricDataPointExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64Counter.Enabled(ctx) {
return
@@ -906,8 +934,10 @@ func (SDKExporterMetricDataPointInflight) Description() string {
//
// All additional attrs passed are included in the recorded value.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Metric data points are counted as inflight from when they are passed to the
+// exporter until the export operation has concluded.
+// If the exporter retries failed export attempts, metric data points remain
+// inflight across all retry attempts and any backoff between them.
func (m SDKExporterMetricDataPointInflight) Add(
ctx context.Context,
incr int64,
@@ -936,8 +966,10 @@ func (m SDKExporterMetricDataPointInflight) Add(
// AddSet adds incr to the existing count for set.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Metric data points are counted as inflight from when they are passed to the
+// exporter until the export operation has concluded.
+// If the exporter retries failed export attempts, metric data points remain
+// inflight across all retry attempts and any backoff between them.
func (m SDKExporterMetricDataPointInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64UpDownCounter.Enabled(ctx) {
return
@@ -1138,6 +1170,11 @@ func (SDKExporterOperationDuration) Description() string {
// successful
// operations, `error.type` MUST NOT be set. For unsuccessful export operations,
// `error.type` MUST contain a relevant failure cause.
+// If the exporter retries failed export attempts, exactly one observation MUST
+// be recorded per export operation,
+// covering the wall-clock duration from the start of the first attempt through
+// the conclusion of the final attempt (including any backoff between attempts).
+// `error.type` reflects the cause of the final attempt.
//
// [http]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1
// [grpc]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success
@@ -1175,6 +1212,11 @@ func (m SDKExporterOperationDuration) Record(
// successful
// operations, `error.type` MUST NOT be set. For unsuccessful export operations,
// `error.type` MUST contain a relevant failure cause.
+// If the exporter retries failed export attempts, exactly one observation MUST
+// be recorded per export operation,
+// covering the wall-clock duration from the start of the first attempt through
+// the conclusion of the final attempt (including any backoff between attempts).
+// `error.type` reflects the cause of the final attempt.
//
// [http]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1
// [grpc]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success
@@ -1312,6 +1354,11 @@ func (SDKExporterSpanExported) Description() string {
// success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each span MUST be counted exactly once per export operation: intermediate
+// failed attempts that are followed by a retry MUST NOT increment the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterSpanExported) Add(
ctx context.Context,
incr int64,
@@ -1347,6 +1394,11 @@ func (m SDKExporterSpanExported) Add(
// success.
// If no rejection reason is available, `rejected` SHOULD be used as value for
// `error.type`.
+// If the exporter retries failed export attempts, the export operation is
+// considered finished only after the final attempt has concluded.
+// Each span MUST be counted exactly once per export operation: intermediate
+// failed attempts that are followed by a retry MUST NOT increment the counter,
+// and `error.type` reflects the cause of the final attempt.
func (m SDKExporterSpanExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64Counter.Enabled(ctx) {
return
@@ -1554,8 +1606,10 @@ func (SDKExporterSpanInflight) Description() string {
//
// All additional attrs passed are included in the recorded value.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Spans are counted as inflight from when they are passed to the exporter until
+// the export operation has concluded.
+// If the exporter retries failed export attempts, spans remain inflight across
+// all retry attempts and any backoff between them.
func (m SDKExporterSpanInflight) Add(
ctx context.Context,
incr int64,
@@ -1584,8 +1638,10 @@ func (m SDKExporterSpanInflight) Add(
// AddSet adds incr to the existing count for set.
//
-// For successful exports, `error.type` MUST NOT be set. For failed exports,
-// `error.type` MUST contain the failure cause.
+// Spans are counted as inflight from when they are passed to the exporter until
+// the export operation has concluded.
+// If the exporter retries failed export attempts, spans remain inflight across
+// all retry attempts and any backoff between them.
func (m SDKExporterSpanInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64UpDownCounter.Enabled(ctx) {
return
@@ -2071,6 +2127,11 @@ func (SDKProcessorLogProcessed) Description() string {
//
// For successful processing, `error.type` MUST NOT be set. For failed
// processing, `error.type` MUST contain the failure cause.
+// SDK Batching Log Record Processors MUST use `queue_full` as the value of
+// `error.type` for log records dropped due to a full queue.
+// SDK Log Record Processors MUST use `already_shutdown` as the value of
+// `error.type` for log records dropped because the processor has already been
+// shut down.
// For the SDK Simple and Batching Log Record Processor a log record is
// considered to be processed already when it has been submitted to the exporter,
// not when the corresponding export call has finished.
@@ -2104,6 +2165,11 @@ func (m SDKProcessorLogProcessed) Add(
//
// For successful processing, `error.type` MUST NOT be set. For failed
// processing, `error.type` MUST contain the failure cause.
+// SDK Batching Log Record Processors MUST use `queue_full` as the value of
+// `error.type` for log records dropped due to a full queue.
+// SDK Log Record Processors MUST use `already_shutdown` as the value of
+// `error.type` for log records dropped because the processor has already been
+// shut down.
// For the SDK Simple and Batching Log Record Processor a log record is
// considered to be processed already when it has been submitted to the exporter,
// not when the corresponding export call has finished.
@@ -2125,8 +2191,6 @@ func (m SDKProcessorLogProcessed) AddSet(ctx context.Context, incr int64, set at
// AttrErrorType returns an optional attribute for the "error.type" semantic
// convention. It represents a low-cardinality description of the failure reason.
-// SDK Batching Log Record Processors MUST use `queue_full` for log records
-// dropped due to a full queue.
func (SDKProcessorLogProcessed) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
return attribute.String("error.type", string(val))
}
@@ -2207,8 +2271,6 @@ func (SDKProcessorLogProcessedObservable) Description() string {
// AttrErrorType returns an optional attribute for the "error.type" semantic
// convention. It represents a low-cardinality description of the failure reason.
-// SDK Batching Log Record Processors MUST use `queue_full` for log records
-// dropped due to a full queue.
func (SDKProcessorLogProcessedObservable) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
return attribute.String("error.type", string(val))
}
@@ -2440,6 +2502,10 @@ func (SDKProcessorSpanProcessed) Description() string {
//
// For successful processing, `error.type` MUST NOT be set. For failed
// processing, `error.type` MUST contain the failure cause.
+// SDK Batching Span Processors MUST use `queue_full` as the value of
+// `error.type` for spans dropped due to a full queue.
+// SDK Span Processors MUST use `already_shutdown` as the value of `error.type`
+// for spans dropped because the processor has already been shut down.
// For the SDK Simple and Batching Span Processor a span is considered to be
// processed already when it has been submitted to the exporter, not when the
// corresponding export call has finished.
@@ -2473,6 +2539,10 @@ func (m SDKProcessorSpanProcessed) Add(
//
// For successful processing, `error.type` MUST NOT be set. For failed
// processing, `error.type` MUST contain the failure cause.
+// SDK Batching Span Processors MUST use `queue_full` as the value of
+// `error.type` for spans dropped due to a full queue.
+// SDK Span Processors MUST use `already_shutdown` as the value of `error.type`
+// for spans dropped because the processor has already been shut down.
// For the SDK Simple and Batching Span Processor a span is considered to be
// processed already when it has been submitted to the exporter, not when the
// corresponding export call has finished.
@@ -2494,8 +2564,6 @@ func (m SDKProcessorSpanProcessed) AddSet(ctx context.Context, incr int64, set a
// AttrErrorType returns an optional attribute for the "error.type" semantic
// convention. It represents a low-cardinality description of the failure reason.
-// SDK Batching Span Processors MUST use `queue_full` for spans dropped due to a
-// full queue.
func (SDKProcessorSpanProcessed) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
return attribute.String("error.type", string(val))
}
@@ -2576,8 +2644,6 @@ func (SDKProcessorSpanProcessedObservable) Description() string {
// AttrErrorType returns an optional attribute for the "error.type" semantic
// convention. It represents a low-cardinality description of the failure reason.
-// SDK Batching Span Processors MUST use `queue_full` for spans dropped due to a
-// full queue.
func (SDKProcessorSpanProcessedObservable) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
return attribute.String("error.type", string(val))
}
@@ -2806,6 +2872,9 @@ func (SDKSpanLive) Description() string {
// Add adds incr to the existing count for attrs.
//
// All additional attrs passed are included in the recorded value.
+//
+// Non-recording spans are not counted, hence `otel.span.sampling_result` can
+// only take values `RECORD_ONLY` and `RECORD_AND_SAMPLE`, not `DROP`.
func (m SDKSpanLive) Add(
ctx context.Context,
incr int64,
@@ -2833,6 +2902,9 @@ func (m SDKSpanLive) Add(
}
// AddSet adds incr to the existing count for set.
+//
+// Non-recording spans are not counted, hence `otel.span.sampling_result` can
+// only take values `RECORD_ONLY` and `RECORD_AND_SAMPLE`, not `DROP`.
func (m SDKSpanLive) AddSet(ctx context.Context, incr int64, set attribute.Set) {
if !m.Int64UpDownCounter.Enabled(ctx) {
return
diff --git a/vendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.go b/vendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.go
index 304f6476..cef35800 100644
--- a/vendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.go
+++ b/vendor/go.opentelemetry.io/proto/otlp/common/v1/common.pb.go
@@ -194,7 +194,7 @@ type AnyValue_StringValueStrindex struct {
// Profiling signal and process the data as if this value were absent or
// empty, ignoring its semantic content for the non-Profiling signal.
//
- // Status: [Development]
+ // Status: [Alpha]
StringValueStrindex int32 `protobuf:"varint,8,opt,name=string_value_strindex,json=stringValueStrindex,proto3,oneof"`
}
@@ -330,7 +330,7 @@ type KeyValue struct {
unknownFields protoimpl.UnknownFields
// The key name of the pair.
- // key_ref MUST NOT be set if key is used.
+ // key_strindex MUST NOT be set if key is used.
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// The value of the pair.
Value *AnyValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
@@ -344,7 +344,7 @@ type KeyValue struct {
// Profiling signal and process the data as if this value were absent or
// empty, ignoring its semantic content for the non-Profiling signal.
//
- // Status: [Development]
+ // Status: [Alpha]
KeyStrindex int32 `protobuf:"varint,3,opt,name=key_strindex,json=keyStrindex,proto3" json:"key_strindex,omitempty"`
}
diff --git a/vendor/go.opentelemetry.io/proto/otlp/metrics/v1/metrics.pb.go b/vendor/go.opentelemetry.io/proto/otlp/metrics/v1/metrics.pb.go
index 748c9fb1..e148ddd1 100644
--- a/vendor/go.opentelemetry.io/proto/otlp/metrics/v1/metrics.pb.go
+++ b/vendor/go.opentelemetry.io/proto/otlp/metrics/v1/metrics.pb.go
@@ -527,7 +527,7 @@ type Metric struct {
// A description of the metric, which can be used in documentation.
Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
// The unit in which the metric value is reported. Follows the format
- // described by https://unitsofmeasure.org/ucum.html.
+ // described by https://ucum.org/ucum and https://units-of-measurement.org/
Unit string `protobuf:"bytes,3,opt,name=unit,proto3" json:"unit,omitempty"`
// Data determines the aggregation type (if any) of the metric, what is the
// reported value type for the data points, as well as the relatationship to
diff --git a/vendor/golang.org/x/tools/go/ast/inspector/cursor.go b/vendor/golang.org/x/tools/go/ast/inspector/cursor.go
index 239b10c4..1c482252 100644
--- a/vendor/golang.org/x/tools/go/ast/inspector/cursor.go
+++ b/vendor/golang.org/x/tools/go/ast/inspector/cursor.go
@@ -10,6 +10,7 @@ import (
"go/token"
"iter"
"reflect"
+ "strings"
"golang.org/x/tools/go/ast/edge"
)
@@ -110,6 +111,46 @@ func (c Cursor) String() string {
return reflect.TypeOf(c.Node()).String()
}
+// GoString returns a string describing the cursor's path from the
+// root, if any.
+func (c Cursor) GoString() string {
+ if !c.Valid() {
+ return "(invalid)"
+ }
+ if c.index < 0 {
+ return "(root)"
+ }
+ // e.g "File.Decls[1].(*ast.GenDecl).Specs[0].(*ast.TypeSpec)"
+ //
+ // In hindsight even the File node should have reported a
+ // virtual ParentEdge of (Root_Files, i) where i is the index
+ // among the files passed to NewInspector. Then the path would
+ // read "(root).Files[i]", etc; but we missed the boat.
+ var buf strings.Builder
+ buf.WriteString("File")
+ var visit func(Cursor)
+ visit = func(c Cursor) {
+ ek, idx := c.ParentEdge()
+ if ek == edge.Invalid {
+ return // File
+ }
+ visit(c.Parent())
+ fmt.Fprintf(&buf, ".%s", ek.FieldName())
+ if idx >= 0 {
+ fmt.Fprintf(&buf, "[%d]", idx)
+ }
+ ftype := ek.FieldType()
+ if idx >= 0 {
+ ftype = ftype.Elem() // []T -> T
+ }
+ if ftype.Kind() == reflect.Interface {
+ fmt.Fprintf(&buf, ".(%T)", c.Node())
+ }
+ }
+ visit(c)
+ return buf.String()
+}
+
// indices return the [start, end) half-open interval of event indices.
func (c Cursor) indices() (int32, int32) {
if c.index < 0 {
diff --git a/vendor/golang.org/x/tools/go/packages/visit.go b/vendor/golang.org/x/tools/go/packages/visit.go
index c546b1b6..06747a9d 100644
--- a/vendor/golang.org/x/tools/go/packages/visit.go
+++ b/vendor/golang.org/x/tools/go/packages/visit.go
@@ -5,11 +5,11 @@
package packages
import (
- "cmp"
"fmt"
"iter"
"os"
- "slices"
+
+ "golang.org/x/tools/internal/moremaps"
)
// Visit visits all the packages in the import graph whose roots are
@@ -40,7 +40,7 @@ func Visit(pkgs []*Package, pre func(*Package) bool, post func(*Package)) {
seen[pkg] = true
if pre == nil || pre(pkg) {
- for _, imp := range sorted(pkg.Imports) { // for determinism
+ for _, imp := range moremaps.Sorted(pkg.Imports) { // for determinism
visit(imp)
}
}
@@ -88,7 +88,7 @@ func Postorder(pkgs []*Package) iter.Seq[*Package] {
visit = func(pkg *Package) bool {
if !seen[pkg] {
seen[pkg] = true
- for _, imp := range sorted(pkg.Imports) { // for determinism
+ for _, imp := range moremaps.Sorted(pkg.Imports) { // for determinism
if !visit(imp) {
return false
}
@@ -106,28 +106,3 @@ func Postorder(pkgs []*Package) iter.Seq[*Package] {
}
}
}
-
-// -- copied from golang.org.x/tools/gopls/internal/util/moremaps --
-
-// sorted returns an iterator over the entries of m in key order.
-func sorted[M ~map[K]V, K cmp.Ordered, V any](m M) iter.Seq2[K, V] {
- // TODO(adonovan): use maps.Sorted if proposal #68598 is accepted.
- return func(yield func(K, V) bool) {
- keys := keySlice(m)
- slices.Sort(keys)
- for _, k := range keys {
- if !yield(k, m[k]) {
- break
- }
- }
- }
-}
-
-// KeySlice returns the keys of the map M, like slices.Collect(maps.Keys(m)).
-func keySlice[M ~map[K]V, K comparable, V any](m M) []K {
- r := make([]K, 0, len(m))
- for k := range m {
- r = append(r, k)
- }
- return r
-}
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/callee.go b/vendor/golang.org/x/tools/go/types/typeutil/callee.go
deleted file mode 100644
index 3d24a8c6..00000000
--- a/vendor/golang.org/x/tools/go/types/typeutil/callee.go
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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.
-
-package typeutil
-
-import (
- "go/ast"
- "go/types"
- _ "unsafe" // for linkname
-)
-
-// Callee returns the named target of a function call, if any:
-// a function, method, builtin, or variable.
-// It returns nil for a T(x) conversion.
-//
-// Functions and methods may potentially have type parameters.
-//
-// Note: for calls of instantiated functions and methods, Callee returns
-// the corresponding generic function or method on the generic type.
-func Callee(info *types.Info, call *ast.CallExpr) types.Object {
- obj := info.Uses[usedIdent(info, call.Fun)]
- if obj == nil {
- return nil
- }
- if _, ok := obj.(*types.TypeName); ok {
- return nil
- }
- return obj
-}
-
-// StaticCallee returns the target (function or method) of a static function
-// call, if any. It returns nil for calls to builtins.
-//
-// Note: for calls of instantiated functions and methods, StaticCallee returns
-// the corresponding generic function or method on the generic type.
-func StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func {
- obj := info.Uses[usedIdent(info, call.Fun)]
- fn, _ := obj.(*types.Func)
- if fn == nil || interfaceMethod(fn) {
- return nil
- }
- return fn
-}
-
-// usedIdent is the implementation of [internal/typesinternal.UsedIdent].
-// It returns the identifier associated with e.
-// See typesinternal.UsedIdent for a fuller description.
-// This function should live in typesinternal, but cannot because it would
-// create an import cycle.
-//
-//go:linkname usedIdent golang.org/x/tools/go/types/typeutil.usedIdent
-func usedIdent(info *types.Info, e ast.Expr) *ast.Ident {
- if info.Types == nil || info.Uses == nil {
- panic("one of info.Types or info.Uses is nil; both must be populated")
- }
- // Look through type instantiation if necessary.
- switch d := ast.Unparen(e).(type) {
- case *ast.IndexExpr:
- if info.Types[d.Index].IsType() {
- e = d.X
- }
- case *ast.IndexListExpr:
- e = d.X
- }
-
- switch e := ast.Unparen(e).(type) {
- // info.Uses always has the object we want, even for selector expressions.
- // We don't need info.Selections.
- // See go/types/recording.go:recordSelection.
- case *ast.Ident:
- return e
- case *ast.SelectorExpr:
- return e.Sel
- }
- return nil
-}
-
-// interfaceMethod reports whether its argument is a method of an interface.
-// This function should live in typesinternal, but cannot because it would create an import cycle.
-//
-//go:linkname interfaceMethod golang.org/x/tools/go/types/typeutil.interfaceMethod
-func interfaceMethod(f *types.Func) bool {
- recv := f.Signature().Recv()
- return recv != nil && types.IsInterface(recv.Type())
-}
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/imports.go b/vendor/golang.org/x/tools/go/types/typeutil/imports.go
deleted file mode 100644
index b81ce0c3..00000000
--- a/vendor/golang.org/x/tools/go/types/typeutil/imports.go
+++ /dev/null
@@ -1,30 +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 typeutil
-
-import "go/types"
-
-// Dependencies returns all dependencies of the specified packages.
-//
-// Dependent packages appear in topological order: if package P imports
-// package Q, Q appears earlier than P in the result.
-// The algorithm follows import statements in the order they
-// appear in the source code, so the result is a total order.
-func Dependencies(pkgs ...*types.Package) []*types.Package {
- var result []*types.Package
- seen := make(map[*types.Package]bool)
- var visit func(pkgs []*types.Package)
- visit = func(pkgs []*types.Package) {
- for _, p := range pkgs {
- if !seen[p] {
- seen[p] = true
- visit(p.Imports())
- result = append(result, p)
- }
- }
- }
- visit(pkgs)
- return result
-}
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/map.go b/vendor/golang.org/x/tools/go/types/typeutil/map.go
deleted file mode 100644
index 36624572..00000000
--- a/vendor/golang.org/x/tools/go/types/typeutil/map.go
+++ /dev/null
@@ -1,459 +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 typeutil defines various utilities for types, such as [Map],
-// a hash table that maps [types.Type] to any value.
-package typeutil
-
-import (
- "bytes"
- "fmt"
- "go/types"
- "hash/maphash"
-
- "golang.org/x/tools/internal/typeparams"
-)
-
-// Map is a hash-table-based mapping from types (types.Type) to
-// arbitrary values. The concrete types that implement
-// the Type interface are pointers. Since they are not canonicalized,
-// == cannot be used to check for equivalence, and thus we cannot
-// simply use a Go map.
-//
-// Just as with map[K]V, a nil *Map is a valid empty map.
-//
-// Read-only map operations ([Map.At], [Map.Len], and so on) may
-// safely be called concurrently.
-//
-// TODO(adonovan): deprecate in favor of https://go.dev/issues/69420
-// and 69559, if the latter proposals for a generic hash-map type and
-// a types.Hash function are accepted.
-type Map struct {
- table map[uint32][]entry // maps hash to bucket; entry.key==nil means unused
- length int // number of map entries
-}
-
-// entry is an entry (key/value association) in a hash bucket.
-type entry struct {
- key types.Type
- value any
-}
-
-// SetHasher has no effect.
-//
-// It is a relic of an optimization that is no longer profitable. Do
-// not use [Hasher], [MakeHasher], or [SetHasher] in new code.
-func (m *Map) SetHasher(Hasher) {}
-
-// Delete removes the entry with the given key, if any.
-// It returns true if the entry was found.
-func (m *Map) Delete(key types.Type) bool {
- if m != nil && m.table != nil {
- hash := hash(key)
- bucket := m.table[hash]
- for i, e := range bucket {
- if e.key != nil && types.Identical(key, e.key) {
- // We can't compact the bucket as it
- // would disturb iterators.
- bucket[i] = entry{}
- m.length--
- return true
- }
- }
- }
- return false
-}
-
-// At returns the map entry for the given key.
-// The result is nil if the entry is not present.
-func (m *Map) At(key types.Type) any {
- if m != nil && m.table != nil {
- for _, e := range m.table[hash(key)] {
- if e.key != nil && types.Identical(key, e.key) {
- return e.value
- }
- }
- }
- return nil
-}
-
-// Set sets the map entry for key to val,
-// and returns the previous entry, if any.
-func (m *Map) Set(key types.Type, value any) (prev any) {
- if m.table != nil {
- hash := hash(key)
- bucket := m.table[hash]
- var hole *entry
- for i, e := range bucket {
- if e.key == nil {
- hole = &bucket[i]
- } else if types.Identical(key, e.key) {
- prev = e.value
- bucket[i].value = value
- return
- }
- }
-
- if hole != nil {
- *hole = entry{key, value} // overwrite deleted entry
- } else {
- m.table[hash] = append(bucket, entry{key, value})
- }
- } else {
- hash := hash(key)
- m.table = map[uint32][]entry{hash: {entry{key, value}}}
- }
-
- m.length++
- return
-}
-
-// Len returns the number of map entries.
-func (m *Map) Len() int {
- if m != nil {
- return m.length
- }
- return 0
-}
-
-// Iterate calls function f on each entry in the map in unspecified order.
-//
-// If f should mutate the map, Iterate provides the same guarantees as
-// Go maps: if f deletes a map entry that Iterate has not yet reached,
-// f will not be invoked for it, but if f inserts a map entry that
-// Iterate has not yet reached, whether or not f will be invoked for
-// it is unspecified.
-func (m *Map) Iterate(f func(key types.Type, value any)) {
- if m != nil {
- for _, bucket := range m.table {
- for _, e := range bucket {
- if e.key != nil {
- f(e.key, e.value)
- }
- }
- }
- }
-}
-
-// Keys returns a new slice containing the set of map keys.
-// The order is unspecified.
-func (m *Map) Keys() []types.Type {
- keys := make([]types.Type, 0, m.Len())
- m.Iterate(func(key types.Type, _ any) {
- keys = append(keys, key)
- })
- return keys
-}
-
-func (m *Map) toString(values bool) string {
- if m == nil {
- return "{}"
- }
- var buf bytes.Buffer
- fmt.Fprint(&buf, "{")
- sep := ""
- m.Iterate(func(key types.Type, value any) {
- fmt.Fprint(&buf, sep)
- sep = ", "
- fmt.Fprint(&buf, key)
- if values {
- fmt.Fprintf(&buf, ": %q", value)
- }
- })
- fmt.Fprint(&buf, "}")
- return buf.String()
-}
-
-// String returns a string representation of the map's entries.
-// Values are printed using fmt.Sprintf("%v", v).
-// Order is unspecified.
-func (m *Map) String() string {
- return m.toString(true)
-}
-
-// KeysString returns a string representation of the map's key set.
-// Order is unspecified.
-func (m *Map) KeysString() string {
- return m.toString(false)
-}
-
-// -- Hasher --
-
-// hash returns the hash of type t.
-// TODO(adonovan): replace by types.Hash when Go proposal #69420 is accepted.
-func hash(t types.Type) uint32 {
- return theHasher.Hash(t)
-}
-
-// A Hasher provides a [Hasher.Hash] method to map a type to its hash value.
-// Hashers are stateless, and all are equivalent.
-type Hasher struct{}
-
-var theHasher Hasher
-
-// MakeHasher returns Hasher{}.
-// Hashers are stateless; all are equivalent.
-func MakeHasher() Hasher { return theHasher }
-
-// Hash computes a hash value for the given type t such that
-// Identical(t, t') => Hash(t) == Hash(t').
-func (h Hasher) Hash(t types.Type) uint32 {
- return hasher{inGenericSig: false}.hash(t)
-}
-
-// hasher holds the state of a single Hash traversal: whether we are
-// inside the signature of a generic function; this is used to
-// optimize [hasher.hashTypeParam].
-type hasher struct{ inGenericSig bool }
-
-// hashString computes the FowlerβNollβVo hash of s.
-func hashString(s string) uint32 {
- var h uint32
- for i := 0; i < len(s); i++ {
- h ^= uint32(s[i])
- h *= 16777619
- }
- return h
-}
-
-// hash computes the hash of t.
-func (h hasher) hash(t types.Type) uint32 {
- // See Identical for rationale.
- switch t := t.(type) {
- case *types.Basic:
- return uint32(t.Kind())
-
- case *types.Alias:
- return h.hash(types.Unalias(t))
-
- case *types.Array:
- return 9043 + 2*uint32(t.Len()) + 3*h.hash(t.Elem())
-
- case *types.Slice:
- return 9049 + 2*h.hash(t.Elem())
-
- case *types.Struct:
- var hash uint32 = 9059
- for i, n := 0, t.NumFields(); i < n; i++ {
- f := t.Field(i)
- if f.Anonymous() {
- hash += 8861
- }
- hash += hashString(t.Tag(i))
- hash += hashString(f.Name()) // (ignore f.Pkg)
- hash += h.hash(f.Type())
- }
- return hash
-
- case *types.Pointer:
- return 9067 + 2*h.hash(t.Elem())
-
- case *types.Signature:
- var hash uint32 = 9091
- if t.Variadic() {
- hash *= 8863
- }
-
- tparams := t.TypeParams()
- if n := tparams.Len(); n > 0 {
- h.inGenericSig = true // affects constraints, params, and results
-
- for i := range n {
- tparam := tparams.At(i)
- hash += 7 * h.hash(tparam.Constraint())
- }
- }
-
- return hash + 3*h.hashTuple(t.Params()) + 5*h.hashTuple(t.Results())
-
- case *types.Union:
- return h.hashUnion(t)
-
- case *types.Interface:
- // Interfaces are identical if they have the same set of methods, with
- // identical names and types, and they have the same set of type
- // restrictions. See go/types.identical for more details.
- var hash uint32 = 9103
-
- // Hash methods.
- for i, n := 0, t.NumMethods(); i < n; i++ {
- // Method order is not significant.
- // Ignore m.Pkg().
- m := t.Method(i)
- // Use shallow hash on method signature to
- // avoid anonymous interface cycles.
- hash += 3*hashString(m.Name()) + 5*h.shallowHash(m.Type())
- }
-
- // Hash type restrictions.
- terms, err := typeparams.InterfaceTermSet(t)
- // if err != nil t has invalid type restrictions.
- if err == nil {
- hash += h.hashTermSet(terms)
- }
-
- return hash
-
- case *types.Map:
- return 9109 + 2*h.hash(t.Key()) + 3*h.hash(t.Elem())
-
- case *types.Chan:
- return 9127 + 2*uint32(t.Dir()) + 3*h.hash(t.Elem())
-
- case *types.Named:
- hash := h.hashTypeName(t.Obj())
- targs := t.TypeArgs()
- for targ := range targs.Types() {
- hash += 2 * h.hash(targ)
- }
- return hash
-
- case *types.TypeParam:
- return h.hashTypeParam(t)
-
- case *types.Tuple:
- return h.hashTuple(t)
- }
-
- panic(fmt.Sprintf("%T: %v", t, t))
-}
-
-func (h hasher) hashTuple(tuple *types.Tuple) uint32 {
- // See go/types.identicalTypes for rationale.
- n := tuple.Len()
- hash := 9137 + 2*uint32(n)
- for i := range n {
- hash += 3 * h.hash(tuple.At(i).Type())
- }
- return hash
-}
-
-func (h hasher) hashUnion(t *types.Union) uint32 {
- // Hash type restrictions.
- terms, err := typeparams.UnionTermSet(t)
- // if err != nil t has invalid type restrictions. Fall back on a non-zero
- // hash.
- if err != nil {
- return 9151
- }
- return h.hashTermSet(terms)
-}
-
-func (h hasher) hashTermSet(terms []*types.Term) uint32 {
- hash := 9157 + 2*uint32(len(terms))
- for _, term := range terms {
- // term order is not significant.
- termHash := h.hash(term.Type())
- if term.Tilde() {
- termHash *= 9161
- }
- hash += 3 * termHash
- }
- return hash
-}
-
-// hashTypeParam returns the hash of a type parameter.
-func (h hasher) hashTypeParam(t *types.TypeParam) uint32 {
- // Within the signature of a generic function, TypeParams are
- // identical if they have the same index and constraint, so we
- // hash them based on index.
- //
- // When we are outside a generic function, free TypeParams are
- // identical iff they are the same object, so we can use a
- // more discriminating hash consistent with object identity.
- // This optimization saves [Map] about 4% when hashing all the
- // types.Info.Types in the forward closure of net/http.
- if !h.inGenericSig {
- // Optimization: outside a generic function signature,
- // use a more discrimating hash consistent with object identity.
- return h.hashTypeName(t.Obj())
- }
- return 9173 + 3*uint32(t.Index())
-}
-
-var theSeed = maphash.MakeSeed()
-
-// hashTypeName hashes the pointer of tname.
-func (hasher) hashTypeName(tname *types.TypeName) uint32 {
- // Since types.Identical uses == to compare TypeNames,
- // the Hash function uses maphash.Comparable.
- hash := maphash.Comparable(theSeed, tname)
- return uint32(hash ^ (hash >> 32))
-}
-
-// shallowHash computes a hash of t without looking at any of its
-// element Types, to avoid potential anonymous cycles in the types of
-// interface methods.
-//
-// When an unnamed non-empty interface type appears anywhere among the
-// arguments or results of an interface method, there is a potential
-// for endless recursion. Consider:
-//
-// type X interface { m() []*interface { X } }
-//
-// The problem is that the Methods of the interface in m's result type
-// include m itself; there is no mention of the named type X that
-// might help us break the cycle.
-// (See comment in go/types.identical, case *Interface, for more.)
-func (h hasher) shallowHash(t types.Type) uint32 {
- // t is the type of an interface method (Signature),
- // its params or results (Tuples), or their immediate
- // elements (mostly Slice, Pointer, Basic, Named),
- // so there's no need to optimize anything else.
- switch t := t.(type) {
- case *types.Alias:
- return h.shallowHash(types.Unalias(t))
-
- case *types.Signature:
- var hash uint32 = 604171
- if t.Variadic() {
- hash *= 971767
- }
- // The Signature/Tuple recursion is always finite
- // and invariably shallow.
- return hash + 1062599*h.shallowHash(t.Params()) + 1282529*h.shallowHash(t.Results())
-
- case *types.Tuple:
- n := t.Len()
- hash := 9137 + 2*uint32(n)
- for i := range n {
- hash += 53471161 * h.shallowHash(t.At(i).Type())
- }
- return hash
-
- case *types.Basic:
- return 45212177 * uint32(t.Kind())
-
- case *types.Array:
- return 1524181 + 2*uint32(t.Len())
-
- case *types.Slice:
- return 2690201
-
- case *types.Struct:
- return 3326489
-
- case *types.Pointer:
- return 4393139
-
- case *types.Union:
- return 562448657
-
- case *types.Interface:
- return 2124679 // no recursion here
-
- case *types.Map:
- return 9109
-
- case *types.Chan:
- return 9127
-
- case *types.Named:
- return h.hashTypeName(t.Obj())
-
- case *types.TypeParam:
- return h.hashTypeParam(t)
- }
- panic(fmt.Sprintf("shallowHash: %T: %v", t, t))
-}
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go b/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go
deleted file mode 100644
index f7666028..00000000
--- a/vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go
+++ /dev/null
@@ -1,71 +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.
-
-// This file implements a cache of method sets.
-
-package typeutil
-
-import (
- "go/types"
- "sync"
-)
-
-// A MethodSetCache records the method set of each type T for which
-// MethodSet(T) is called so that repeat queries are fast.
-// The zero value is a ready-to-use cache instance.
-type MethodSetCache struct {
- mu sync.Mutex
- named map[*types.Named]struct{ value, pointer *types.MethodSet } // method sets for named N and *N
- others map[types.Type]*types.MethodSet // all other types
-}
-
-// MethodSet returns the method set of type T. It is thread-safe.
-//
-// If cache is nil, this function is equivalent to types.NewMethodSet(T).
-// Utility functions can thus expose an optional *MethodSetCache
-// parameter to clients that care about performance.
-func (cache *MethodSetCache) MethodSet(T types.Type) *types.MethodSet {
- if cache == nil {
- return types.NewMethodSet(T)
- }
- cache.mu.Lock()
- defer cache.mu.Unlock()
-
- switch T := types.Unalias(T).(type) {
- case *types.Named:
- return cache.lookupNamed(T).value
-
- case *types.Pointer:
- if N, ok := types.Unalias(T.Elem()).(*types.Named); ok {
- return cache.lookupNamed(N).pointer
- }
- }
-
- // all other types
- // (The map uses pointer equivalence, not type identity.)
- mset := cache.others[T]
- if mset == nil {
- mset = types.NewMethodSet(T)
- if cache.others == nil {
- cache.others = make(map[types.Type]*types.MethodSet)
- }
- cache.others[T] = mset
- }
- return mset
-}
-
-func (cache *MethodSetCache) lookupNamed(named *types.Named) struct{ value, pointer *types.MethodSet } {
- if cache.named == nil {
- cache.named = make(map[*types.Named]struct{ value, pointer *types.MethodSet })
- }
- // Avoid recomputing mset(*T) for each distinct Pointer
- // instance whose underlying type is a named type.
- msets, ok := cache.named[named]
- if !ok {
- msets.value = types.NewMethodSet(named)
- msets.pointer = types.NewMethodSet(types.NewPointer(named))
- cache.named[named] = msets
- }
- return msets
-}
diff --git a/vendor/golang.org/x/tools/go/types/typeutil/ui.go b/vendor/golang.org/x/tools/go/types/typeutil/ui.go
deleted file mode 100644
index 9dda6a25..00000000
--- a/vendor/golang.org/x/tools/go/types/typeutil/ui.go
+++ /dev/null
@@ -1,53 +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 typeutil
-
-// This file defines utilities for user interfaces that display types.
-
-import (
- "go/types"
-)
-
-// IntuitiveMethodSet returns the intuitive method set of a type T,
-// which is the set of methods you can call on an addressable value of
-// that type.
-//
-// The result always contains MethodSet(T), and is exactly MethodSet(T)
-// for interface types and for pointer-to-concrete types.
-// For all other concrete types T, the result additionally
-// contains each method belonging to *T if there is no identically
-// named method on T itself.
-//
-// This corresponds to user intuition about method sets;
-// this function is intended only for user interfaces.
-//
-// The order of the result is as for types.MethodSet(T).
-func IntuitiveMethodSet(T types.Type, msets *MethodSetCache) []*types.Selection {
- isPointerToConcrete := func(T types.Type) bool {
- ptr, ok := types.Unalias(T).(*types.Pointer)
- return ok && !types.IsInterface(ptr.Elem())
- }
-
- var result []*types.Selection
- mset := msets.MethodSet(T)
- if types.IsInterface(T) || isPointerToConcrete(T) {
- for i, n := 0, mset.Len(); i < n; i++ {
- result = append(result, mset.At(i))
- }
- } else {
- // T is some other concrete type.
- // Report methods of T and *T, preferring those of T.
- pmset := msets.MethodSet(types.NewPointer(T))
- for i, n := 0, pmset.Len(); i < n; i++ {
- meth := pmset.At(i)
- if m := mset.Lookup(meth.Obj().Pkg(), meth.Obj().Name()); m != nil {
- meth = m
- }
- result = append(result, meth)
- }
-
- }
- return result
-}
diff --git a/vendor/golang.org/x/tools/internal/moremaps/maps.go b/vendor/golang.org/x/tools/internal/moremaps/maps.go
new file mode 100644
index 00000000..a1bae078
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/moremaps/maps.go
@@ -0,0 +1,116 @@
+// Copyright 2023 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 moremaps contains more functions for working with maps.
+package moremaps
+
+import (
+ "cmp"
+ "iter"
+ "maps"
+ "slices"
+)
+
+// Arbitrary returns an arbitrary (key, value) entry from the map and ok is true, if
+// the map is not empty. Otherwise, it returns zero values for K and V, and false.
+func Arbitrary[K comparable, V any](m map[K]V) (_ K, _ V, ok bool) {
+ for k, v := range m {
+ return k, v, true
+ }
+ return
+}
+
+// Group returns a new non-nil map containing the elements of s grouped by the
+// keys returned from the key func.
+func Group[K comparable, V any](s []V, key func(V) K) map[K][]V {
+ m := make(map[K][]V)
+ for _, v := range s {
+ k := key(v)
+ m[k] = append(m[k], v)
+ }
+ return m
+}
+
+// KeySlice returns the keys of the map M, like slices.Collect(maps.Keys(m)).
+func KeySlice[M ~map[K]V, K comparable, V any](m M) []K {
+ r := make([]K, 0, len(m))
+ for k := range m {
+ r = append(r, k)
+ }
+ return r
+}
+
+// ValueSlice returns the values of the map M, like slices.Collect(maps.Values(m)).
+func ValueSlice[M ~map[K]V, K comparable, V any](m M) []V {
+ r := make([]V, 0, len(m))
+ for _, v := range m {
+ r = append(r, v)
+ }
+ return r
+}
+
+// SameKeys reports whether x and y have equal sets of keys.
+func SameKeys[K comparable, V1, V2 any](x map[K]V1, y map[K]V2) bool {
+ ignoreValues := func(V1, V2) bool { return true }
+ return maps.EqualFunc(x, y, ignoreValues)
+}
+
+// Sorted returns an iterator over the entries of m in key order.
+func Sorted[M ~map[K]V, K cmp.Ordered, V any](m M) iter.Seq2[K, V] {
+ // TODO(adonovan): use maps.Sorted if proposal #68598 is accepted.
+ return func(yield func(K, V) bool) {
+ keys := KeySlice(m)
+ slices.Sort(keys)
+ for _, k := range keys {
+ if !yield(k, m[k]) {
+ break
+ }
+ }
+ }
+}
+
+// SortedFunc returns an iterator over the entries of m in the key order determined by cmp.
+func SortedFunc[M ~map[K]V, K comparable, V any](m M, cmp func(x, y K) int) iter.Seq2[K, V] {
+ // TODO(adonovan): use maps.SortedFunc if proposal #68598 is accepted.
+ return func(yield func(K, V) bool) {
+ keys := KeySlice(m)
+ slices.SortFunc(keys, cmp)
+ for _, k := range keys {
+ if !yield(k, m[k]) {
+ break
+ }
+ }
+ }
+}
+
+// Delete is like delete(m, k) but reports whether deletion occurred.
+func Delete[M ~map[K]V, K comparable, V any](m M, k K) bool {
+ pre := len(m)
+ delete(m, k)
+ return pre != len(m)
+}
+
+// Entry is a key-value pair obtained from a map.
+type Entry[K comparable, V any] struct {
+ Key K
+ Value V
+}
+
+// Entries returns a new unordered array of the entries of a map.
+func Entries[M ~map[K]V, K comparable, V any](m M) []Entry[K, V] {
+ entries := make([]Entry[K, V], 0, len(m))
+ for k, v := range m {
+ entries = append(entries, Entry[K, V]{k, v})
+ }
+ return entries
+}
+
+// FromEntries returns a new map into which the entries have been inserted in order.
+func FromEntries[K comparable, V any](entries []Entry[K, V]) map[K]V {
+ m := make(map[K]V, len(entries))
+ for _, e := range entries {
+ m[e.Key] = e.Value
+ }
+ return m
+}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go
deleted file mode 100644
index cdae2b8e..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/common.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2021 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 typeparams contains common utilities for writing tools that
-// interact with generic Go code, as introduced with Go 1.18. It
-// supplements the standard library APIs. Notably, the StructuralTerms
-// API computes a minimal representation of the structural
-// restrictions on a type parameter.
-//
-// An external version of these APIs is available in the
-// golang.org/x/exp/typeparams module.
-package typeparams
-
-import (
- "go/ast"
- "go/token"
- "go/types"
-)
-
-// UnpackIndexExpr extracts data from AST nodes that represent index
-// expressions.
-//
-// For an ast.IndexExpr, the resulting indices slice will contain exactly one
-// index expression. For an ast.IndexListExpr (go1.18+), it may have a variable
-// number of index expressions.
-//
-// For nodes that don't represent index expressions, the first return value of
-// UnpackIndexExpr will be nil.
-func UnpackIndexExpr(n ast.Node) (x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) {
- switch e := n.(type) {
- case *ast.IndexExpr:
- return e.X, e.Lbrack, []ast.Expr{e.Index}, e.Rbrack
- case *ast.IndexListExpr:
- return e.X, e.Lbrack, e.Indices, e.Rbrack
- }
- return nil, token.NoPos, nil, token.NoPos
-}
-
-// PackIndexExpr returns an *ast.IndexExpr or *ast.IndexListExpr, depending on
-// the cardinality of indices. Calling PackIndexExpr with len(indices) == 0
-// will panic.
-func PackIndexExpr(x ast.Expr, lbrack token.Pos, indices []ast.Expr, rbrack token.Pos) ast.Expr {
- switch len(indices) {
- case 0:
- panic("empty indices")
- case 1:
- return &ast.IndexExpr{
- X: x,
- Lbrack: lbrack,
- Index: indices[0],
- Rbrack: rbrack,
- }
- default:
- return &ast.IndexListExpr{
- X: x,
- Lbrack: lbrack,
- Indices: indices,
- Rbrack: rbrack,
- }
- }
-}
-
-// IsTypeParam reports whether t is a type parameter (or an alias of one).
-func IsTypeParam(t types.Type) bool {
- _, ok := types.Unalias(t).(*types.TypeParam)
- return ok
-}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/coretype.go b/vendor/golang.org/x/tools/internal/typeparams/coretype.go
deleted file mode 100644
index 2e05de46..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/coretype.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2022 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 typeparams
-
-import (
- "fmt"
- "go/types"
-)
-
-// CoreType returns the core type of T or nil if T does not have a core type.
-//
-// As of Go1.25, the notion of a core type has been removed from the language spec.
-// See https://go.dev/blog/coretypes for more details.
-// TODO(mkalil): We should eventually consider removing all uses of CoreType.
-func CoreType(T types.Type) types.Type {
- U := T.Underlying()
- if _, ok := U.(*types.Interface); !ok {
- return U // for non-interface types,
- }
-
- terms, err := NormalTerms(U)
- if len(terms) == 0 || err != nil {
- // len(terms) -> empty type set of interface.
- // err != nil => U is invalid, exceeds complexity bounds, or has an empty type set.
- return nil // no core type.
- }
-
- U = terms[0].Type().Underlying()
- var identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying())
- for identical = 1; identical < len(terms); identical++ {
- if !types.Identical(U, terms[identical].Type().Underlying()) {
- break
- }
- }
-
- if identical == len(terms) {
- // From the deprecated core types spec:
- // "There is a single type U which is the underlying type of all types in the type set of T"
- return U
- }
- ch, ok := U.(*types.Chan)
- if !ok {
- return nil // no core type as identical < len(terms) and U is not a channel.
- }
- // From the deprecated core types spec:
- // "the type chan E if T contains only bidirectional channels, or the type chan<- E or
- // <-chan E depending on the direction of the directional channels present."
- for chans := identical; chans < len(terms); chans++ {
- curr, ok := terms[chans].Type().Underlying().(*types.Chan)
- if !ok {
- return nil
- }
- if !types.Identical(ch.Elem(), curr.Elem()) {
- return nil // channel elements are not identical.
- }
- if ch.Dir() == types.SendRecv {
- // ch is bidirectional. We can safely always use curr's direction.
- ch = curr
- } else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() {
- // ch and curr are not bidirectional and not the same direction.
- return nil
- }
- }
- return ch
-}
-
-// NormalTerms returns a slice of terms representing the normalized structural
-// type restrictions of a type, if any.
-//
-// For all types other than *types.TypeParam, *types.Interface, and
-// *types.Union, this is just a single term with Tilde() == false and
-// Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see
-// below.
-//
-// Structural type restrictions of a type parameter are created via
-// non-interface types embedded in its constraint interface (directly, or via a
-// chain of interface embeddings). For example, in the declaration type
-// T[P interface{~int; m()}] int the structural restriction of the type
-// parameter P is ~int.
-//
-// With interface embedding and unions, the specification of structural type
-// restrictions may be arbitrarily complex. For example, consider the
-// following:
-//
-// type A interface{ ~string|~[]byte }
-//
-// type B interface{ int|string }
-//
-// type C interface { ~string|~int }
-//
-// type T[P interface{ A|B; C }] int
-//
-// In this example, the structural type restriction of P is ~string|int: A|B
-// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,
-// which when intersected with C (~string|~int) yields ~string|int.
-//
-// NormalTerms computes these expansions and reductions, producing a
-// "normalized" form of the embeddings. A structural restriction is normalized
-// if it is a single union containing no interface terms, and is minimal in the
-// sense that removing any term changes the set of types satisfying the
-// constraint. It is left as a proof for the reader that, modulo sorting, there
-// is exactly one such normalized form.
-//
-// Because the minimal representation always takes this form, NormalTerms
-// returns a slice of tilde terms corresponding to the terms of the union in
-// the normalized structural restriction. An error is returned if the type is
-// invalid, exceeds complexity bounds, or has an empty type set. In the latter
-// case, NormalTerms returns ErrEmptyTypeSet.
-//
-// NormalTerms makes no guarantees about the order of terms, except that it
-// is deterministic.
-func NormalTerms(T types.Type) ([]*types.Term, error) {
- // typeSetOf(T) == typeSetOf(Unalias(T))
- typ := types.Unalias(T)
- if named, ok := typ.(*types.Named); ok {
- typ = named.Underlying()
- }
- switch typ := typ.(type) {
- case *types.TypeParam:
- return StructuralTerms(typ)
- case *types.Union:
- return UnionTermSet(typ)
- case *types.Interface:
- return InterfaceTermSet(typ)
- default:
- return []*types.Term{types.NewTerm(false, T)}, nil
- }
-}
-
-// Deref returns the type of the variable pointed to by t,
-// if t's core type is a pointer; otherwise it returns t.
-//
-// Do not assume that Deref(T)==T implies T is not a pointer:
-// consider "type T *T", for example.
-//
-// TODO(adonovan): ideally this would live in typesinternal, but that
-// creates an import cycle. Move there when we melt this package down.
-func Deref(t types.Type) types.Type {
- if ptr, ok := CoreType(t).(*types.Pointer); ok {
- return ptr.Elem()
- }
- return t
-}
-
-// MustDeref returns the type of the variable pointed to by t.
-// It panics if t's core type is not a pointer.
-//
-// TODO(adonovan): ideally this would live in typesinternal, but that
-// creates an import cycle. Move there when we melt this package down.
-func MustDeref(t types.Type) types.Type {
- if ptr, ok := CoreType(t).(*types.Pointer); ok {
- return ptr.Elem()
- }
- panic(fmt.Sprintf("%v is not a pointer", t))
-}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/free.go b/vendor/golang.org/x/tools/internal/typeparams/free.go
deleted file mode 100644
index 4c391876..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/free.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// 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 typeparams
-
-import (
- "go/types"
-)
-
-// Free is a memoization of the set of free type parameters within a
-// type. It makes a sequence of calls to [Free.Has] for overlapping
-// types more efficient. The zero value is ready for use.
-//
-// NOTE: Adapted from go/types/infer.go. If it is later exported, factor.
-type Free struct {
- seen map[types.Type]bool
-}
-
-// Has reports whether the specified type has a free type parameter.
-func (w *Free) Has(typ types.Type) (res bool) {
- // detect cycles
- if x, ok := w.seen[typ]; ok {
- return x
- }
- if w.seen == nil {
- w.seen = make(map[types.Type]bool)
- }
- w.seen[typ] = false
- defer func() {
- w.seen[typ] = res
- }()
-
- switch t := typ.(type) {
- case nil, *types.Basic: // TODO(gri) should nil be handled here?
- break
-
- case *types.Alias:
- if t.TypeParams().Len() > t.TypeArgs().Len() {
- return true // This is an uninstantiated Alias.
- }
- // The expansion of an alias can have free type parameters,
- // whether or not the alias itself has type parameters:
- //
- // func _[K comparable]() {
- // type Set = map[K]bool // free(Set) = {K}
- // type MapTo[V] = map[K]V // free(Map[foo]) = {V}
- // }
- //
- // So, we must Unalias.
- return w.Has(types.Unalias(t))
-
- case *types.Array:
- return w.Has(t.Elem())
-
- case *types.Slice:
- return w.Has(t.Elem())
-
- case *types.Struct:
- for i, n := 0, t.NumFields(); i < n; i++ {
- if w.Has(t.Field(i).Type()) {
- return true
- }
- }
-
- case *types.Pointer:
- return w.Has(t.Elem())
-
- case *types.Tuple:
- n := t.Len()
- for i := range n {
- if w.Has(t.At(i).Type()) {
- return true
- }
- }
-
- case *types.Signature:
- // t.tparams may not be nil if we are looking at a signature
- // of a generic function type (or an interface method) that is
- // part of the type we're testing. We don't care about these type
- // parameters.
- // Similarly, the receiver of a method may declare (rather than
- // use) type parameters, we don't care about those either.
- // Thus, we only need to look at the input and result parameters.
- return w.Has(t.Params()) || w.Has(t.Results())
-
- case *types.Interface:
- for i, n := 0, t.NumMethods(); i < n; i++ {
- if w.Has(t.Method(i).Type()) {
- return true
- }
- }
- terms, err := InterfaceTermSet(t)
- if err != nil {
- return false // ill typed
- }
- for _, term := range terms {
- if w.Has(term.Type()) {
- return true
- }
- }
-
- case *types.Map:
- return w.Has(t.Key()) || w.Has(t.Elem())
-
- case *types.Chan:
- return w.Has(t.Elem())
-
- case *types.Named:
- args := t.TypeArgs()
- if params := t.TypeParams(); params.Len() > args.Len() {
- return true // this is an uninstantiated named type.
- }
- for i, n := 0, args.Len(); i < n; i++ {
- if w.Has(args.At(i)) {
- return true
- }
- }
- return w.Has(t.Underlying()) // recurse for types local to parameterized functions
-
- case *types.TypeParam:
- return true
-
- default:
- panic(t) // unreachable
- }
-
- return false
-}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go
deleted file mode 100644
index 8d13f121..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/normalize.go
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2021 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 typeparams
-
-import (
- "errors"
- "fmt"
- "go/types"
- "os"
- "strings"
-)
-
-//go:generate go run copytermlist.go
-
-const debug = false
-
-var ErrEmptyTypeSet = errors.New("empty type set")
-
-// StructuralTerms returns a slice of terms representing the normalized
-// structural type restrictions of a type parameter, if any.
-//
-// Structural type restrictions of a type parameter are created via
-// non-interface types embedded in its constraint interface (directly, or via a
-// chain of interface embeddings). For example, in the declaration
-//
-// type T[P interface{~int; m()}] int
-//
-// the structural restriction of the type parameter P is ~int.
-//
-// With interface embedding and unions, the specification of structural type
-// restrictions may be arbitrarily complex. For example, consider the
-// following:
-//
-// type A interface{ ~string|~[]byte }
-//
-// type B interface{ int|string }
-//
-// type C interface { ~string|~int }
-//
-// type T[P interface{ A|B; C }] int
-//
-// In this example, the structural type restriction of P is ~string|int: A|B
-// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int,
-// which when intersected with C (~string|~int) yields ~string|int.
-//
-// StructuralTerms computes these expansions and reductions, producing a
-// "normalized" form of the embeddings. A structural restriction is normalized
-// if it is a single union containing no interface terms, and is minimal in the
-// sense that removing any term changes the set of types satisfying the
-// constraint. It is left as a proof for the reader that, modulo sorting, there
-// is exactly one such normalized form.
-//
-// Because the minimal representation always takes this form, StructuralTerms
-// returns a slice of tilde terms corresponding to the terms of the union in
-// the normalized structural restriction. An error is returned if the
-// constraint interface is invalid, exceeds complexity bounds, or has an empty
-// type set. In the latter case, StructuralTerms returns ErrEmptyTypeSet.
-//
-// StructuralTerms makes no guarantees about the order of terms, except that it
-// is deterministic.
-func StructuralTerms(tparam *types.TypeParam) ([]*types.Term, error) {
- constraint := tparam.Constraint()
- if constraint == nil {
- return nil, fmt.Errorf("%s has nil constraint", tparam)
- }
- iface, _ := constraint.Underlying().(*types.Interface)
- if iface == nil {
- return nil, fmt.Errorf("constraint is %T, not *types.Interface", constraint.Underlying())
- }
- return InterfaceTermSet(iface)
-}
-
-// InterfaceTermSet computes the normalized terms for a constraint interface,
-// returning an error if the term set cannot be computed or is empty. In the
-// latter case, the error will be ErrEmptyTypeSet.
-//
-// See the documentation of StructuralTerms for more information on
-// normalization.
-func InterfaceTermSet(iface *types.Interface) ([]*types.Term, error) {
- return computeTermSet(iface)
-}
-
-// UnionTermSet computes the normalized terms for a union, returning an error
-// if the term set cannot be computed or is empty. In the latter case, the
-// error will be ErrEmptyTypeSet.
-//
-// See the documentation of StructuralTerms for more information on
-// normalization.
-func UnionTermSet(union *types.Union) ([]*types.Term, error) {
- return computeTermSet(union)
-}
-
-func computeTermSet(typ types.Type) ([]*types.Term, error) {
- tset, err := computeTermSetInternal(typ, make(map[types.Type]*termSet), 0)
- if err != nil {
- return nil, err
- }
- if tset.terms.isEmpty() {
- return nil, ErrEmptyTypeSet
- }
- if tset.terms.isAll() {
- return nil, nil
- }
- var terms []*types.Term
- for _, term := range tset.terms {
- terms = append(terms, types.NewTerm(term.tilde, term.typ))
- }
- return terms, nil
-}
-
-// A termSet holds the normalized set of terms for a given type.
-//
-// The name termSet is intentionally distinct from 'type set': a type set is
-// all types that implement a type (and includes method restrictions), whereas
-// a term set just represents the structural restrictions on a type.
-type termSet struct {
- complete bool
- terms termlist
-}
-
-func indentf(depth int, format string, args ...any) {
- fmt.Fprintf(os.Stderr, strings.Repeat(".", depth)+format+"\n", args...)
-}
-
-func computeTermSetInternal(t types.Type, seen map[types.Type]*termSet, depth int) (res *termSet, err error) {
- if t == nil {
- panic("nil type")
- }
-
- if debug {
- indentf(depth, "%s", t.String())
- defer func() {
- if err != nil {
- indentf(depth, "=> %s", err)
- } else {
- indentf(depth, "=> %s", res.terms.String())
- }
- }()
- }
-
- const maxTermCount = 100
- if tset, ok := seen[t]; ok {
- if !tset.complete {
- return nil, fmt.Errorf("cycle detected in the declaration of %s", t)
- }
- return tset, nil
- }
-
- // Mark the current type as seen to avoid infinite recursion.
- tset := new(termSet)
- defer func() {
- tset.complete = true
- }()
- seen[t] = tset
-
- switch u := t.Underlying().(type) {
- case *types.Interface:
- // The term set of an interface is the intersection of the term sets of its
- // embedded types.
- tset.terms = allTermlist
- for embedded := range u.EmbeddedTypes() {
- if _, ok := embedded.Underlying().(*types.TypeParam); ok {
- return nil, fmt.Errorf("invalid embedded type %T", embedded)
- }
- tset2, err := computeTermSetInternal(embedded, seen, depth+1)
- if err != nil {
- return nil, err
- }
- tset.terms = tset.terms.intersect(tset2.terms)
- }
- case *types.Union:
- // The term set of a union is the union of term sets of its terms.
- tset.terms = nil
- for t := range u.Terms() {
- var terms termlist
- switch t.Type().Underlying().(type) {
- case *types.Interface:
- tset2, err := computeTermSetInternal(t.Type(), seen, depth+1)
- if err != nil {
- return nil, err
- }
- terms = tset2.terms
- case *types.TypeParam, *types.Union:
- // A stand-alone type parameter or union is not permitted as union
- // term.
- return nil, fmt.Errorf("invalid union term %T", t)
- default:
- if t.Type() == types.Typ[types.Invalid] {
- continue
- }
- terms = termlist{{t.Tilde(), t.Type()}}
- }
- tset.terms = tset.terms.union(terms)
- if len(tset.terms) > maxTermCount {
- return nil, fmt.Errorf("exceeded max term count %d", maxTermCount)
- }
- }
- case *types.TypeParam:
- panic("unreachable")
- default:
- // For all other types, the term set is just a single non-tilde term
- // holding the type itself.
- if u != types.Typ[types.Invalid] {
- tset.terms = termlist{{false, t}}
- }
- }
- return tset, nil
-}
-
-// under is a facade for the go/types internal function of the same name. It is
-// used by typeterm.go.
-func under(t types.Type) types.Type {
- return t.Underlying()
-}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/termlist.go b/vendor/golang.org/x/tools/internal/typeparams/termlist.go
deleted file mode 100644
index 9bc29143..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/termlist.go
+++ /dev/null
@@ -1,169 +0,0 @@
-// Code generated by "go test -run=Generate -write=all"; DO NOT EDIT.
-// Source: ../../cmd/compile/internal/types2/termlist.go
-
-// Copyright 2021 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 copytermlist.go DO NOT EDIT.
-
-package typeparams
-
-import (
- "go/types"
- "strings"
-)
-
-// A termlist represents the type set represented by the union
-// t1 βͺ y2 βͺ ... tn of the type sets of the terms t1 to tn.
-// A termlist is in normal form if all terms are disjoint.
-// termlist operations don't require the operands to be in
-// normal form.
-type termlist []*term
-
-// allTermlist represents the set of all types.
-// It is in normal form.
-var allTermlist = termlist{new(term)}
-
-// termSep is the separator used between individual terms.
-const termSep = " | "
-
-// String prints the termlist exactly (without normalization).
-func (xl termlist) String() string {
- if len(xl) == 0 {
- return "β
"
- }
- var buf strings.Builder
- for i, x := range xl {
- if i > 0 {
- buf.WriteString(termSep)
- }
- buf.WriteString(x.String())
- }
- return buf.String()
-}
-
-// isEmpty reports whether the termlist xl represents the empty set of types.
-func (xl termlist) isEmpty() bool {
- // If there's a non-nil term, the entire list is not empty.
- // If the termlist is in normal form, this requires at most
- // one iteration.
- for _, x := range xl {
- if x != nil {
- return false
- }
- }
- return true
-}
-
-// isAll reports whether the termlist xl represents the set of all types.
-func (xl termlist) isAll() bool {
- // If there's a π€ term, the entire list is π€.
- // If the termlist is in normal form, this requires at most
- // one iteration.
- for _, x := range xl {
- if x != nil && x.typ == nil {
- return true
- }
- }
- return false
-}
-
-// norm returns the normal form of xl.
-func (xl termlist) norm() termlist {
- // Quadratic algorithm, but good enough for now.
- // TODO(gri) fix asymptotic performance
- used := make([]bool, len(xl))
- var rl termlist
- for i, xi := range xl {
- if xi == nil || used[i] {
- continue
- }
- for j := i + 1; j < len(xl); j++ {
- xj := xl[j]
- if xj == nil || used[j] {
- continue
- }
- if u1, u2 := xi.union(xj); u2 == nil {
- // If we encounter a π€ term, the entire list is π€.
- // Exit early.
- // (Note that this is not just an optimization;
- // if we continue, we may end up with a π€ term
- // and other terms and the result would not be
- // in normal form.)
- if u1.typ == nil {
- return allTermlist
- }
- xi = u1
- used[j] = true // xj is now unioned into xi - ignore it in future iterations
- }
- }
- rl = append(rl, xi)
- }
- return rl
-}
-
-// union returns the union xl βͺ yl.
-func (xl termlist) union(yl termlist) termlist {
- return append(xl, yl...).norm()
-}
-
-// intersect returns the intersection xl β© yl.
-func (xl termlist) intersect(yl termlist) termlist {
- if xl.isEmpty() || yl.isEmpty() {
- return nil
- }
-
- // Quadratic algorithm, but good enough for now.
- // TODO(gri) fix asymptotic performance
- var rl termlist
- for _, x := range xl {
- for _, y := range yl {
- if r := x.intersect(y); r != nil {
- rl = append(rl, r)
- }
- }
- }
- return rl.norm()
-}
-
-// equal reports whether xl and yl represent the same type set.
-func (xl termlist) equal(yl termlist) bool {
- // TODO(gri) this should be more efficient
- return xl.subsetOf(yl) && yl.subsetOf(xl)
-}
-
-// includes reports whether t β xl.
-func (xl termlist) includes(t types.Type) bool {
- for _, x := range xl {
- if x.includes(t) {
- return true
- }
- }
- return false
-}
-
-// supersetOf reports whether y β xl.
-func (xl termlist) supersetOf(y *term) bool {
- for _, x := range xl {
- if y.subsetOf(x) {
- return true
- }
- }
- return false
-}
-
-// subsetOf reports whether xl β yl.
-func (xl termlist) subsetOf(yl termlist) bool {
- if yl.isEmpty() {
- return xl.isEmpty()
- }
-
- // each term x of xl must be a subset of yl
- for _, x := range xl {
- if !yl.supersetOf(x) {
- return false // x is not a subset yl
- }
- }
- return true
-}
diff --git a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go b/vendor/golang.org/x/tools/internal/typeparams/typeterm.go
deleted file mode 100644
index fa758cdc..00000000
--- a/vendor/golang.org/x/tools/internal/typeparams/typeterm.go
+++ /dev/null
@@ -1,172 +0,0 @@
-// Code generated by "go test -run=Generate -write=all"; DO NOT EDIT.
-// Source: ../../cmd/compile/internal/types2/typeterm.go
-
-// Copyright 2021 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 copytermlist.go DO NOT EDIT.
-
-package typeparams
-
-import "go/types"
-
-// A term describes elementary type sets:
-//
-// β
: (*term)(nil) == β
// set of no types (empty set)
-// π€: &term{} == π€ // set of all types (π€niverse)
-// T: &term{false, T} == {T} // set of type T
-// ~t: &term{true, t} == {t' | under(t') == t} // set of types with underlying type t
-type term struct {
- tilde bool // valid if typ != nil
- typ types.Type
-}
-
-func (x *term) String() string {
- switch {
- case x == nil:
- return "β
"
- case x.typ == nil:
- return "π€"
- case x.tilde:
- return "~" + x.typ.String()
- default:
- return x.typ.String()
- }
-}
-
-// equal reports whether x and y represent the same type set.
-func (x *term) equal(y *term) bool {
- // easy cases
- switch {
- case x == nil || y == nil:
- return x == y
- case x.typ == nil || y.typ == nil:
- return x.typ == y.typ
- }
- // β
β x, y β π€
-
- return x.tilde == y.tilde && types.Identical(x.typ, y.typ)
-}
-
-// union returns the union x βͺ y: zero, one, or two non-nil terms.
-func (x *term) union(y *term) (_, _ *term) {
- // easy cases
- switch {
- case x == nil && y == nil:
- return nil, nil // β
βͺ β
== β
- case x == nil:
- return y, nil // β
βͺ y == y
- case y == nil:
- return x, nil // x βͺ β
== x
- case x.typ == nil:
- return x, nil // π€ βͺ y == π€
- case y.typ == nil:
- return y, nil // x βͺ π€ == π€
- }
- // β
β x, y β π€
-
- if x.disjoint(y) {
- return x, y // x βͺ y == (x, y) if x β© y == β
- }
- // x.typ == y.typ
-
- // ~t βͺ ~t == ~t
- // ~t βͺ T == ~t
- // T βͺ ~t == ~t
- // T βͺ T == T
- if x.tilde || !y.tilde {
- return x, nil
- }
- return y, nil
-}
-
-// intersect returns the intersection x β© y.
-func (x *term) intersect(y *term) *term {
- // easy cases
- switch {
- case x == nil || y == nil:
- return nil // β
β© y == β
and β© β
== β
- case x.typ == nil:
- return y // π€ β© y == y
- case y.typ == nil:
- return x // x β© π€ == x
- }
- // β
β x, y β π€
-
- if x.disjoint(y) {
- return nil // x β© y == β
if x β© y == β
- }
- // x.typ == y.typ
-
- // ~t β© ~t == ~t
- // ~t β© T == T
- // T β© ~t == T
- // T β© T == T
- if !x.tilde || y.tilde {
- return x
- }
- return y
-}
-
-// includes reports whether t β x.
-func (x *term) includes(t types.Type) bool {
- // easy cases
- switch {
- case x == nil:
- return false // t β β
== false
- case x.typ == nil:
- return true // t β π€ == true
- }
- // β
β x β π€
-
- u := t
- if x.tilde {
- u = under(u)
- }
- return types.Identical(x.typ, u)
-}
-
-// subsetOf reports whether x β y.
-func (x *term) subsetOf(y *term) bool {
- // easy cases
- switch {
- case x == nil:
- return true // β
β y == true
- case y == nil:
- return false // x β β
== false since x != β
- case y.typ == nil:
- return true // x β π€ == true
- case x.typ == nil:
- return false // π€ β y == false since y != π€
- }
- // β
β x, y β π€
-
- if x.disjoint(y) {
- return false // x β y == false if x β© y == β
- }
- // x.typ == y.typ
-
- // ~t β ~t == true
- // ~t β T == false
- // T β ~t == true
- // T β T == true
- return !x.tilde || y.tilde
-}
-
-// disjoint reports whether x β© y == β
.
-// x.typ and y.typ must not be nil.
-func (x *term) disjoint(y *term) bool {
- if debug && (x.typ == nil || y.typ == nil) {
- panic("invalid argument(s)")
- }
- ux := x.typ
- if y.tilde {
- ux = under(ux)
- }
- uy := y.typ
- if x.tilde {
- uy = under(uy)
- }
- return !types.Identical(ux, uy)
-}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/assignedaddress.go b/vendor/golang.org/x/tools/internal/typesinternal/assignedaddress.go
new file mode 100644
index 00000000..020defc3
--- /dev/null
+++ b/vendor/golang.org/x/tools/internal/typesinternal/assignedaddress.go
@@ -0,0 +1,128 @@
+// Copyright 2026 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 typesinternal
+
+import (
+ "go/ast"
+ "go/token"
+ "go/types"
+
+ "golang.org/x/tools/go/ast/edge"
+ "golang.org/x/tools/go/ast/inspector"
+)
+
+// IsAssignedOrAddressTaken reports whether the expression cur denotes a
+// variable and appears in a context that assigns it or that takes its address,
+// potentially leading to indirect assignment.
+//
+// These examples cause IsAssignedOrAddressTaken on the identifier for x to
+// return true:
+//
+// x = 1
+// x++
+// x[i] = 1 (assume x is an array)
+// x.a[i] = 1 (assume x.a is a non-pointer struct field)
+// use(&x)
+//
+// whereas these cause it to return false:
+//
+// y = x
+// f(x)
+// use(x.a[i])
+// use(*x)
+//
+// The expression may itself be a compound, for example:
+//
+// use(&(*ptr)) => IsAssignedOrAddressTaken("*ptr") = true
+// x.a[i] = 1 => IsAssignedOrAddressTaken("x.a") = true
+// _ = x.a[i] => IsAssignedOrAddressTaken("x.a") = false
+//
+// A variable's declaration is not considered to be an assignment:
+//
+// var x int => IsAssignedOrAddressTaken(x) = false
+// x := 1 => IsAssignedOrAddressTaken(x) = false
+//
+// TODO(adonovan): revisit the surprising behavior for declarations.
+func IsAssignedOrAddressTaken(info *types.Info, cur inspector.Cursor) bool {
+ // Unfortunately we can't simply use info.Types[e].Assignable()
+ // as it is always true for a variable even when that variable is
+ // used only as an r-value. So we must inspect enclosing syntax.
+outer:
+ // Ascend to outermost aggregate of which
+ // original cur is a part:
+ // x -> (x) | x.f | x[i] | x[i:j]
+ for cur = range cur.Enclosing() {
+ switch cur.ParentEdgeKind() {
+ case edge.ParenExpr_X:
+ // If x is an lvalue, then (x) is an lvalue.
+ case edge.SelectorExpr_X:
+ // If x is an lvalue, then x.f is an lvalue iff
+ // the selection does not traverse a pointer.
+ sel := cur.Parent().Node().(*ast.SelectorExpr)
+ if seln, ok := info.Selections[sel]; ok {
+ // Note: there is a bug in Indirect() where it spuriously returns true
+ // when both the selection receiver and parameter are pointers. However,
+ // it's okay in this case because there is no address taken when a
+ // pointer receiver method is called on a pointer type.
+ if seln.Indirect() {
+ return false
+ }
+ if seln.Kind() == types.MethodVal {
+ sig := seln.Obj().Type().(*types.Signature)
+ if is[*types.Pointer](sig.Recv().Type().Underlying()) {
+ t := seln.Recv()
+ // The receiver may be an embedded field, so we need
+ // to get the inner-most type (right before the method
+ // call in seln.Index())
+ for _, idx := range seln.Index()[:len(seln.Index())-1] {
+ t = t.Underlying().(*types.Struct).Field(idx).Type()
+ }
+ if !is[*types.Pointer](t.Underlying()) {
+ return true // takes address of receiver
+ }
+ }
+ return false
+ }
+ }
+ case edge.IndexExpr_X, edge.SliceExpr_X:
+ // If x[i] or x[i:j] is an lvalue,
+ // then x is an lvalue iff x is an array.
+ if !is[*types.Array](info.TypeOf(cur.Node().(ast.Expr)).Underlying()) {
+ return false
+ }
+ default:
+ break outer
+ }
+ }
+ switch cur.ParentEdgeKind() {
+ case edge.AssignStmt_Lhs:
+ assign := cur.Parent().Node().(*ast.AssignStmt)
+ if assign.Tok != token.DEFINE {
+ return true // x = j or x += j
+ }
+ id := cur.Node().(*ast.Ident)
+ // Re-assigned identifiers are recorded in the Uses map.
+ if _, ok := info.Uses[id]; ok {
+ return true // reassignment of x (x, y := 1, 2)
+ }
+ case edge.RangeStmt_Key, edge.RangeStmt_Value:
+ rng := cur.Parent().Node().(*ast.RangeStmt)
+ if rng.Tok == token.ASSIGN {
+ return true // "for k, v = range x" is like an AssignStmt to k, v
+ }
+ case edge.IncDecStmt_X:
+ return true // x++, x--
+ case edge.UnaryExpr_X:
+ if cur.Parent().Node().(*ast.UnaryExpr).Op == token.AND {
+ return true // &x
+ }
+ }
+ return false
+}
+
+func is[T any](x any) bool {
+ _, ok := x.(T)
+ return ok
+}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go b/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go
index 7ebe9768..d5c40a2e 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go
+++ b/vendor/golang.org/x/tools/internal/typesinternal/classify_call.go
@@ -8,7 +8,6 @@ import (
"fmt"
"go/ast"
"go/types"
- _ "unsafe" // for go:linkname hack
)
// CallKind describes the function position of an [*ast.CallExpr].
@@ -72,11 +71,15 @@ func ClassifyCall(info *types.Info, call *ast.CallExpr) CallKind {
if tv.IsBuiltin() {
return CallBuiltin
}
- obj := info.Uses[UsedIdent(info, call.Fun)]
+ id := UsedIdent(info, call.Fun)
+ if id == nil {
+ return CallDynamic
+ }
+ obj := info.Uses[id]
// Classify the call by the type of the object, if any.
switch obj := obj.(type) {
case *types.Func:
- if interfaceMethod(obj) {
+ if isInterfaceMethod(obj) {
return CallInterface
}
return CallStatic
@@ -127,11 +130,69 @@ func ClassifyCall(info *types.Info, call *ast.CallExpr) CallKind {
// Note: if e is an instantiated function or method, UsedIdent returns
// the corresponding generic function or method on the generic type.
func UsedIdent(info *types.Info, e ast.Expr) *ast.Ident {
- return usedIdent(info, e)
+ if info.Types == nil || info.Uses == nil {
+ panic("one of info.Types or info.Uses is nil; both must be populated")
+ }
+ // Look through type instantiation if necessary.
+ switch d := ast.Unparen(e).(type) {
+ case *ast.IndexExpr:
+ if info.Types[d.Index].IsType() {
+ e = d.X
+ }
+ case *ast.IndexListExpr:
+ e = d.X
+ }
+
+ switch e := ast.Unparen(e).(type) {
+ // info.Uses always has the object we want, even for selector expressions.
+ // We don't need info.Selections.
+ // See go/types/recording.go:recordSelection.
+ case *ast.Ident:
+ return e
+ case *ast.SelectorExpr:
+ return e.Sel
+ }
+ return nil
+}
+
+// See [golang.org/x/tools/go/types/typeutil.Callee].
+func Callee(info *types.Info, call *ast.CallExpr) types.Object {
+ id := UsedIdent(info, call.Fun)
+ if id == nil {
+ return nil
+ }
+ obj := info.Uses[id]
+ if obj == nil {
+ return nil
+ }
+ if _, ok := obj.(*types.TypeName); ok {
+ return nil
+ }
+ if fn, ok := obj.(*types.Func); ok {
+ return fn.Origin()
+ }
+ return obj
}
-//go:linkname usedIdent golang.org/x/tools/go/types/typeutil.usedIdent
-func usedIdent(info *types.Info, e ast.Expr) *ast.Ident
+// See [golang.org/x/tools/go/types/typeutil.StaticCallee].
+func StaticCallee(info *types.Info, call *ast.CallExpr) *types.Func {
+ id := UsedIdent(info, call.Fun)
+ if id == nil {
+ return nil
+ }
+ obj := info.Uses[id]
+ if obj == nil {
+ return nil
+ }
+ fn, _ := obj.(*types.Func)
+ if fn == nil || isInterfaceMethod(fn) {
+ return nil
+ }
+ return fn.Origin()
+}
-//go:linkname interfaceMethod golang.org/x/tools/go/types/typeutil.interfaceMethod
-func interfaceMethod(f *types.Func) bool
+// isInterfaceMethod reports whether its argument is a method of an interface.
+func isInterfaceMethod(f *types.Func) bool {
+ recv := f.Signature().Recv()
+ return recv != nil && types.IsInterface(recv.Type())
+}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/element.go b/vendor/golang.org/x/tools/internal/typesinternal/element.go
index 89eeea16..bab37fbf 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/element.go
+++ b/vendor/golang.org/x/tools/internal/typesinternal/element.go
@@ -7,8 +7,6 @@ package typesinternal
import (
"fmt"
"go/types"
-
- "golang.org/x/tools/go/types/typeutil"
)
// ForEachElement calls f for type T and each type reachable from its
@@ -16,25 +14,24 @@ import (
// type constructors; in addition, for each named type N, the type *N
// is added to the result as it may have additional methods.
//
-// The caller must provide an initially empty set used to de-duplicate
-// identical types, potentially across multiple calls to ForEachElement.
-// (Its final value holds all the elements seen, matching the arguments
-// passed to f.)
+// The access argument passed to f indicates whether the type is
+// inaccessible to reflection (for example, intermediate tuple types
+// or underlying types of named types).
//
-// TODO(adonovan): share/harmonize with go/callgraph/rta.
-func ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T types.Type, f func(types.Type)) {
- var visit func(T types.Type, skip bool)
- visit = func(T types.Type, skip bool) {
- if !skip {
- if seen, _ := rtypes.Set(T, true).(bool); seen {
- return // de-dup
- }
-
- f(T) // notify caller of new element type
+// The result of f indicates whether the caller has seen this type
+// already, so we can prune the traversal.
+//
+// methodSetOf abstracts (*typeutil.MethodSetCache).MethodSet,
+// avoiding an import cycle.
+func ForEachElement(methodSetOf func(types.Type) *types.MethodSet, T types.Type, f func(T types.Type, access bool) bool) {
+ var visit func(T types.Type, access bool)
+ visit = func(T types.Type, access bool) {
+ if f(T, access) {
+ return // duplicate; prune descent
}
// Recursion over signatures of each method.
- tmset := msets.MethodSet(T)
+ tmset := methodSetOf(T)
for method := range tmset.Methods() {
sig := method.Type().(*types.Signature)
if sig.TypeParams() != nil {
@@ -65,13 +62,13 @@ func ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T type
//
// TODO(adonovan): document whether or not it is
// safe to skip non-exported methods (as RTA does).
- visit(sig.Params(), true) // skip the Tuple
- visit(sig.Results(), true) // skip the Tuple
+ visit(sig.Params(), false) // the Tuple is inaccessible
+ visit(sig.Results(), false) // the Tuple is inaccessible
}
switch T := T.(type) {
case *types.Alias:
- visit(types.Unalias(T), skip) // emulates the pre-Alias behavior
+ visit(types.Unalias(T), access) // emulates the pre-Alias behavior
case *types.Basic:
// nop
@@ -80,49 +77,49 @@ func ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T type
// nop---handled by recursion over method set.
case *types.Pointer:
- visit(T.Elem(), false)
+ visit(T.Elem(), true)
case *types.Slice:
- visit(T.Elem(), false)
+ visit(T.Elem(), true)
case *types.Chan:
- visit(T.Elem(), false)
+ visit(T.Elem(), true)
case *types.Map:
- visit(T.Key(), false)
- visit(T.Elem(), false)
+ visit(T.Key(), true)
+ visit(T.Elem(), true)
case *types.Signature:
if T.Recv() != nil {
panic(fmt.Sprintf("Signature %s has Recv %s", T, T.Recv()))
}
- visit(T.Params(), true) // skip the Tuple
- visit(T.Results(), true) // skip the Tuple
+ visit(T.Params(), false) // the Tuple is inaccessible
+ visit(T.Results(), false) // the Tuple is inaccessible
case *types.Named:
// A pointer-to-named type can be derived from a named
// type via reflection. It may have methods too.
- visit(types.NewPointer(T), false)
+ visit(types.NewPointer(T), true)
// Consider 'type T struct{S}' where S has methods.
// Reflection provides no way to get from T to struct{S},
// only to S, so the method set of struct{S} is unwanted,
- // so set 'skip' flag during recursion.
- visit(T.Underlying(), true) // skip the unnamed type
+ // so mark it inaccessible during recursion.
+ visit(T.Underlying(), false) // skip the unnamed type
case *types.Array:
- visit(T.Elem(), false)
+ visit(T.Elem(), true)
case *types.Struct:
for i, n := 0, T.NumFields(); i < n; i++ {
// TODO(adonovan): document whether or not
// it is safe to skip non-exported fields.
- visit(T.Field(i).Type(), false)
+ visit(T.Field(i).Type(), true)
}
case *types.Tuple:
for i, n := 0, T.Len(); i < n; i++ {
- visit(T.At(i).Type(), false)
+ visit(T.At(i).Type(), true)
}
case *types.TypeParam, *types.Union:
@@ -133,5 +130,5 @@ func ForEachElement(rtypes *typeutil.Map, msets *typeutil.MethodSetCache, T type
panic(fmt.Sprintf("ForEachElement called on unexpected type %T", T))
}
}
- visit(T, false)
+ visit(T, true)
}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/toonew.go b/vendor/golang.org/x/tools/internal/typesinternal/toonew.go
index cc86487e..386c59c7 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/toonew.go
+++ b/vendor/golang.org/x/tools/internal/typesinternal/toonew.go
@@ -13,20 +13,30 @@ import (
// TooNewStdSymbols computes the set of package-level symbols
// exported by pkg that are not available at the specified version.
-// The result maps each symbol to its minimum version.
//
// The pkg is allowed to contain type errors.
-func TooNewStdSymbols(pkg *types.Package, version string) map[types.Object]string {
- disallowed := make(map[types.Object]string)
+func TooNewStdSymbols(pkg *types.Package, version string) map[types.Object]stdlib.Symbol {
+ disallowed := make(map[types.Object]stdlib.Symbol)
+
+ // Some symbols are accessible before their release but
+ // only with specific build tags unknown to us here.
+ // Avoid false positives in such cases.
+ if pkg.Path() == "testing/synctest" && versions.AtLeast(version, "go1.24") {
+ // requires go1.24 && goexperiment.synctest || go1.25
+ return disallowed
+ }
+ if (pkg.Path() == "encoding/json/v2" || pkg.Path() == "encoding/json/jsontext") && versions.AtLeast(version, "go1.25") {
+ // requires go1.25 && goexperiment.jsonv2 || go1.27
+ return disallowed
+ }
// Pass 1: package-level symbols.
symbols := stdlib.PackageSymbols[pkg.Path()]
for _, sym := range symbols {
- symver := sym.Version.String()
- if versions.Before(version, symver) {
+ if versions.Before(version, sym.Version.String()) {
switch sym.Kind {
case stdlib.Func, stdlib.Var, stdlib.Const, stdlib.Type:
- disallowed[pkg.Scope().Lookup(sym.Name)] = symver
+ disallowed[pkg.Scope().Lookup(sym.Name)] = sym
}
}
}
@@ -60,28 +70,36 @@ func TooNewStdSymbols(pkg *types.Package, version string) map[types.Object]strin
// spuriously cause the analyzer to report a reference to a
// too-new symbol even though this expression compiles just
// fine (with the fake implementation) using go1.21.
+ var noSym stdlib.Symbol
+ depth := make(map[types.Object]int)
for _, sym := range symbols {
- symVersion := sym.Version.String()
- if !versions.Before(version, symVersion) {
+ if !versions.Before(version, sym.Version.String()) {
continue // allowed
}
var obj types.Object
+ var indices []int
switch sym.Kind {
case stdlib.Field:
typename, name := sym.SplitField()
- if t := pkg.Scope().Lookup(typename); t != nil && disallowed[t] == "" {
- obj, _, _ = types.LookupFieldOrMethod(t.Type(), false, pkg, name)
+ if t := pkg.Scope().Lookup(typename); t != nil && disallowed[t] == noSym {
+ obj, indices, _ = types.LookupFieldOrMethod(t.Type(), false, pkg, name)
}
case stdlib.Method:
ptr, recvname, name := sym.SplitMethod()
- if t := pkg.Scope().Lookup(recvname); t != nil && disallowed[t] == "" {
- obj, _, _ = types.LookupFieldOrMethod(t.Type(), ptr, pkg, name)
+ if t := pkg.Scope().Lookup(recvname); t != nil && disallowed[t] == noSym {
+ obj, indices, _ = types.LookupFieldOrMethod(t.Type(), ptr, pkg, name)
}
}
if obj != nil {
- disallowed[obj] = symVersion
+ // In the presence of embedding, two or more "pkg.T.name"
+ // strings may map to the same types.Object.
+ // Prefer the Object with the shorter index path.
+ if min, ok := depth[obj]; !ok || len(indices) < min {
+ depth[obj] = len(indices)
+ disallowed[obj] = sym
+ }
}
}
diff --git a/vendor/golang.org/x/tools/internal/typesinternal/types.go b/vendor/golang.org/x/tools/internal/typesinternal/types.go
index d2c0b4c5..9fd48b08 100644
--- a/vendor/golang.org/x/tools/internal/typesinternal/types.go
+++ b/vendor/golang.org/x/tools/internal/typesinternal/types.go
@@ -270,3 +270,11 @@ func ImplicitFieldSelections(seln types.Selection) iter.Seq2[*types.Var, bool] {
}
}
}
+
+func TupleOf(elems ...types.Type) *types.Tuple {
+ params := make([]*types.Var, len(elems))
+ for i, elem := range elems {
+ params[i] = types.NewParam(token.NoPos, nil, "", elem)
+ }
+ return types.NewTuple(params...)
+}
diff --git a/vendor/knative.dev/pkg/observability/semconv/httpconv/httpconv.go b/vendor/knative.dev/pkg/observability/semconv/httpconv/httpconv.go
index a6f5f9c9..50c683f8 100644
--- a/vendor/knative.dev/pkg/observability/semconv/httpconv/httpconv.go
+++ b/vendor/knative.dev/pkg/observability/semconv/httpconv/httpconv.go
@@ -18,7 +18,7 @@ package httpconv
import (
"go.opentelemetry.io/otel/metric"
- "go.opentelemetry.io/otel/semconv/v1.41.0/httpconv"
+ "go.opentelemetry.io/otel/semconv/v1.43.0/httpconv"
)
type (
diff --git a/vendor/knative.dev/pkg/observability/semconv/semconv.go b/vendor/knative.dev/pkg/observability/semconv/semconv.go
index bf5490ad..b4375aa7 100644
--- a/vendor/knative.dev/pkg/observability/semconv/semconv.go
+++ b/vendor/knative.dev/pkg/observability/semconv/semconv.go
@@ -18,7 +18,7 @@ package semconv
import (
"go.opentelemetry.io/otel/attribute"
- semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.43.0"
)
const (
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 05a14fe2..282b38bd 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -41,8 +41,8 @@ github.com/emicklei/go-restful/v3/log
## explicit; go 1.18
github.com/evanphx/json-patch/v5
github.com/evanphx/json-patch/v5/internal/json
-# github.com/felixge/httpsnoop v1.0.4
-## explicit; go 1.13
+# github.com/felixge/httpsnoop v1.1.0
+## explicit; go 1.25
github.com/felixge/httpsnoop
# github.com/fxamacker/cbor/v2 v2.9.0
## explicit; go 1.20
@@ -187,8 +187,8 @@ github.com/opencontainers/image-spec/specs-go/v1
# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
## explicit
github.com/pmezard/go-difflib/difflib
-# github.com/prometheus/client_golang v1.23.2
-## explicit; go 1.23.0
+# github.com/prometheus/client_golang v1.24.1
+## explicit; go 1.25.0
github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil
github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header
github.com/prometheus/client_golang/prometheus
@@ -205,7 +205,7 @@ github.com/prometheus/common/model
# github.com/prometheus/otlptranslator v1.0.0
## explicit; go 1.23.0
github.com/prometheus/otlptranslator
-# github.com/prometheus/procfs v0.21.0
+# github.com/prometheus/procfs v0.21.1
## explicit; go 1.25.0
github.com/prometheus/procfs
github.com/prometheus/procfs/internal/fs
@@ -280,12 +280,12 @@ github.com/x448/float16
## explicit; go 1.24.0
go.opentelemetry.io/auto/sdk
go.opentelemetry.io/auto/sdk/internal/telemetry
-# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.70.0
## explicit; go 1.25.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/request
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconv
-# go.opentelemetry.io/contrib/instrumentation/runtime v0.69.0
+# go.opentelemetry.io/contrib/instrumentation/runtime v0.70.0
## explicit; go 1.25.0
go.opentelemetry.io/contrib/instrumentation/runtime
go.opentelemetry.io/contrib/instrumentation/runtime/internal/deprecatedruntime
@@ -304,12 +304,11 @@ go.opentelemetry.io/otel/internal/global
go.opentelemetry.io/otel/propagation
go.opentelemetry.io/otel/semconv/internal/metricpool
go.opentelemetry.io/otel/semconv/v1.37.0
-go.opentelemetry.io/otel/semconv/v1.41.0
-go.opentelemetry.io/otel/semconv/v1.41.0/goconv
-go.opentelemetry.io/otel/semconv/v1.41.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.41.0/otelconv
go.opentelemetry.io/otel/semconv/v1.43.0
-# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0
+go.opentelemetry.io/otel/semconv/v1.43.0/goconv
+go.opentelemetry.io/otel/semconv/v1.43.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.43.0/otelconv
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal
@@ -320,7 +319,7 @@ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/oconf
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/retry
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/transform
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/internal/x
-# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal
@@ -331,11 +330,11 @@ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/oconf
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/retry
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/transform
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/internal/x
-# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace
go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform
-# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal
@@ -345,7 +344,7 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/observ
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/x
-# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal
@@ -355,14 +354,14 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/observ
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/otlpconfig
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/retry
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/internal/x
-# go.opentelemetry.io/otel/exporters/prometheus v0.66.0
+# go.opentelemetry.io/otel/exporters/prometheus v0.67.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/prometheus
go.opentelemetry.io/otel/exporters/prometheus/internal
go.opentelemetry.io/otel/exporters/prometheus/internal/counter
go.opentelemetry.io/otel/exporters/prometheus/internal/observ
go.opentelemetry.io/otel/exporters/prometheus/internal/x
-# go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.44.0
+# go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace
go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal
@@ -374,22 +373,24 @@ go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x
go.opentelemetry.io/otel/metric
go.opentelemetry.io/otel/metric/embedded
go.opentelemetry.io/otel/metric/noop
-# go.opentelemetry.io/otel/sdk v1.44.0
+# go.opentelemetry.io/otel/sdk v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/sdk
go.opentelemetry.io/otel/sdk/instrumentation
+go.opentelemetry.io/otel/sdk/internal/attrnorm
go.opentelemetry.io/otel/sdk/internal/x
go.opentelemetry.io/otel/sdk/resource
go.opentelemetry.io/otel/sdk/trace
go.opentelemetry.io/otel/sdk/trace/internal/env
go.opentelemetry.io/otel/sdk/trace/internal/observ
go.opentelemetry.io/otel/sdk/trace/tracetest
-# go.opentelemetry.io/otel/sdk/metric v1.44.0
+# go.opentelemetry.io/otel/sdk/metric v1.45.0
## explicit; go 1.25.0
go.opentelemetry.io/otel/sdk/metric
go.opentelemetry.io/otel/sdk/metric/exemplar
go.opentelemetry.io/otel/sdk/metric/internal
go.opentelemetry.io/otel/sdk/metric/internal/aggregate
+go.opentelemetry.io/otel/sdk/metric/internal/attrnorm
go.opentelemetry.io/otel/sdk/metric/internal/observ
go.opentelemetry.io/otel/sdk/metric/internal/reservoir
go.opentelemetry.io/otel/sdk/metric/internal/x
@@ -400,8 +401,8 @@ go.opentelemetry.io/otel/trace
go.opentelemetry.io/otel/trace/embedded
go.opentelemetry.io/otel/trace/internal/telemetry
go.opentelemetry.io/otel/trace/noop
-# go.opentelemetry.io/proto/otlp v1.10.0
-## explicit; go 1.24.0
+# go.opentelemetry.io/proto/otlp v1.11.0
+## explicit; go 1.25.0
go.opentelemetry.io/proto/otlp/collector/metrics/v1
go.opentelemetry.io/proto/otlp/collector/trace/v1
go.opentelemetry.io/proto/otlp/common/v1
@@ -438,7 +439,7 @@ go.yaml.in/yaml/v3
# golang.org/x/exp v0.0.0-20250808145144-a408d31f581a
## explicit; go 1.23.0
golang.org/x/exp/slices
-# golang.org/x/mod v0.38.0
+# golang.org/x/mod v0.39.0
## explicit; go 1.25.0
golang.org/x/mod/internal/lazyregexp
golang.org/x/mod/module
@@ -485,7 +486,7 @@ golang.org/x/text/unicode/norm
# golang.org/x/time v0.15.0
## explicit; go 1.25.0
golang.org/x/time/rate
-# golang.org/x/tools v0.48.0
+# golang.org/x/tools v0.49.0
## explicit; go 1.25.0
golang.org/x/tools/go/ast/astutil
golang.org/x/tools/go/ast/edge
@@ -493,7 +494,6 @@ golang.org/x/tools/go/ast/inspector
golang.org/x/tools/go/gcexportdata
golang.org/x/tools/go/packages
golang.org/x/tools/go/types/objectpath
-golang.org/x/tools/go/types/typeutil
golang.org/x/tools/imports
golang.org/x/tools/internal/aliases
golang.org/x/tools/internal/event
@@ -505,20 +505,20 @@ golang.org/x/tools/internal/gocommand
golang.org/x/tools/internal/gopathwalk
golang.org/x/tools/internal/imports
golang.org/x/tools/internal/modindex
+golang.org/x/tools/internal/moremaps
golang.org/x/tools/internal/packagesinternal
golang.org/x/tools/internal/pkgbits
golang.org/x/tools/internal/stdlib
-golang.org/x/tools/internal/typeparams
golang.org/x/tools/internal/typesinternal
golang.org/x/tools/internal/versions
# gomodules.xyz/jsonpatch/v2 v2.5.0
## explicit; go 1.20
gomodules.xyz/jsonpatch/v2
-# google.golang.org/genproto/googleapis/api v0.0.0-20260727163830-6c54dddc4772
+# google.golang.org/genproto/googleapis/api v0.0.0-20260803160001-6ac0973c030d
## explicit; go 1.25.0
google.golang.org/genproto/googleapis/api/expr/v1alpha1
google.golang.org/genproto/googleapis/api/httpbody
-# google.golang.org/genproto/googleapis/rpc v0.0.0-20260720155508-bb71a54f79dc
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20260803160001-6ac0973c030d
## explicit; go 1.25.0
google.golang.org/genproto/googleapis/rpc/errdetails
google.golang.org/genproto/googleapis/rpc/status
@@ -1178,7 +1178,7 @@ k8s.io/utils/net
k8s.io/utils/ptr
k8s.io/utils/strings/slices
k8s.io/utils/trace
-# knative.dev/pkg v0.0.0-20260622140654-39ebae2ee2dc
+# knative.dev/pkg v0.0.0-20260918182429-5dc1978f0042
## explicit; go 1.25.0
knative.dev/pkg/apis
knative.dev/pkg/apis/duck