Compare commits

..

10 commits

Author SHA1 Message Date
5e0457290d [#XX] container: Add ListStream method
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
2024-10-28 18:00:34 +03:00
f0fc40e116
[#123] Resolve funlen linter issue
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-11 14:40:54 +03:00
29f2157563
[#123] protogen: Treat bytes field as non-nullable
In protobuf 3.12 they have added an support for `optional` keyword,
which has made it into the main branch in 3.15.
https://github.com/protocolbuffers/protobuf/blob/main/docs/implementing_proto3_presence.md
https://github.com/protocolbuffers/protobuf/blob/v3.12.0/docs/field_presence.md#presence-in-proto3-apis

This means that without an explicit `optional` keyword field presence
for scalars is not tracked, thus empty string in JSON should be
unmarshaled to a nil byte slice. Relevant decoding code and tests from
protojson:
fb995f184a/internal/impl/message_reflect_field.go (L327)
fb995f184a/encoding/protojson/decode_test.go (L134)
fb995f184a/encoding/protojson/decode_test.go (L156)

We do not support `optional` keyword and the generator will fail if it sees on.
So only implement the default behaviour.

Refs #122

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-11 14:40:54 +03:00
29c522d5d8 [#122] protogen: Always marshal empty fields
This is how it was done previously:
a0a9b765f3/rpc/message/encoding.go (L31)

The tricky part is `[]byte` which is marshaled as `null` by easyjson
helper, but as `""` by protojson.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-07 15:05:43 +03:00
3e705a3cbe [#121] .golangci.yml: Replace exportloopref with copyloopvar
Fix linter warning:
```
WARN The linter 'exportloopref' is deprecated (since v1.60.2) due to: Since Go1.22 (loopvar) this linter is no longer relevant. Replaced by copyloopvar.
```

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-02 09:48:11 +03:00
d9a604fbc1 [#120] proto/test: Unskip protojson compatibility test
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-01 14:18:52 +03:00
b06dad731c [#120] protogen: Marshal 64-bit integers as strings
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-01 14:18:46 +03:00
d94b9c6d0d [#120] protogen: Unmarshal stringified integers from JSON
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-01 14:18:45 +03:00
eeb754c327 [#120] protogen: Omit empty fields from JSON output
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-01 14:11:43 +03:00
805da79319 [#120] protogen: Marshal enum as string
Be compatible with protojson.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2024-10-01 14:11:43 +03:00
29 changed files with 6540 additions and 1572 deletions

View file

@ -50,7 +50,7 @@ linters:
- bidichk
- durationcheck
- exhaustive
- exportloopref
- copyloopvar
- gofmt
- goimports
- misspell

View file

@ -98,11 +98,19 @@ func (x *BalanceRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"ownerId\":"
out.RawString(prefix[1:])
x.OwnerId.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerId\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -295,21 +303,43 @@ func (x *BalanceRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -452,11 +482,19 @@ func (x *BalanceResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"balance\":"
out.RawString(prefix[1:])
x.Balance.MarshalEasyJSON(out)
if x.Balance != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"balance\":"
out.RawString(prefix)
x.Balance.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -649,21 +687,43 @@ func (x *BalanceResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -11,6 +11,7 @@ import (
easyproto "github.com/VictoriaMetrics/easyproto"
jlexer "github.com/mailru/easyjson/jlexer"
jwriter "github.com/mailru/easyjson/jwriter"
strconv "strconv"
)
type Decimal struct {
@ -113,16 +114,33 @@ func (x *Decimal) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"value\":"
out.RawString(prefix[1:])
out.Int64(x.Value)
if x.Value != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendInt(out.Buffer.Buf, x.Value, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"precision\":"
out.RawString(prefix)
out.Uint32(x.Precision)
if x.Precision != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"precision\":"
out.RawString(prefix)
out.Uint32(x.Precision)
}
}
out.RawByte('}')
}
@ -155,13 +173,29 @@ func (x *Decimal) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "value":
{
var f int64
f = in.Int64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := int64(v)
f = pv
x.Value = f
}
case "precision":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Precision = f
}
}

View file

@ -352,26 +352,65 @@ func (x *EACLRecord_Filter) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"headerType\":"
out.RawString(prefix[1:])
out.Int32(int32(x.HeaderType))
if x.HeaderType != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"headerType\":"
out.RawString(prefix)
v := int32(x.HeaderType)
if vv, ok := HeaderType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"matchType\":"
out.RawString(prefix)
out.Int32(int32(x.MatchType))
if x.MatchType != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"matchType\":"
out.RawString(prefix)
v := int32(x.MatchType)
if vv, ok := MatchType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"key\":"
out.RawString(prefix)
out.String(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
out.RawByte('}')
}
@ -566,23 +605,43 @@ func (x *EACLRecord_Target) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"role\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Role))
if x.Role != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"role\":"
out.RawString(prefix)
v := int32(x.Role)
if vv, ok := Role_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"keys\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Keys {
if i != 0 {
if len(x.Keys) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
out.Base64Bytes(x.Keys[i])
const prefix string = "\"keys\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Keys {
if i != 0 {
out.RawByte(',')
}
out.Base64Bytes(x.Keys[i])
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -808,40 +867,79 @@ func (x *EACLRecord) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"operation\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Operation))
}
{
const prefix string = ",\"action\":"
out.RawString(prefix)
out.Int32(int32(x.Action))
}
{
const prefix string = ",\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
if x.Operation != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"operation\":"
out.RawString(prefix)
v := int32(x.Operation)
if vv, ok := Operation_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
x.Filters[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"targets\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Targets {
if i != 0 {
if x.Action != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"action\":"
out.RawString(prefix)
v := int32(x.Action)
if vv, ok := Action_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
x.Targets[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
if len(x.Filters) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
out.RawByte(',')
}
x.Filters[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if len(x.Targets) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"targets\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Targets {
if i != 0 {
out.RawByte(',')
}
x.Targets[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
out.RawByte('}')
}
@ -1084,28 +1182,50 @@ func (x *EACLTable) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
}
{
const prefix string = ",\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
{
const prefix string = ",\"records\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Records {
if i != 0 {
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Records[i].MarshalEasyJSON(out)
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
}
{
if x.ContainerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
}
{
if len(x.Records) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"records\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Records {
if i != 0 {
out.RawByte(',')
}
x.Records[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -1292,21 +1412,49 @@ func (x *BearerToken_Body_TokenLifetime) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"exp\":"
out.RawString(prefix[1:])
out.Uint64(x.Exp)
if x.Exp != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"exp\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Exp, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"nbf\":"
out.RawString(prefix)
out.Uint64(x.Nbf)
if x.Nbf != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"nbf\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Nbf, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"iat\":"
out.RawString(prefix)
out.Uint64(x.Iat)
if x.Iat != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"iat\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Iat, 10)
out.RawByte('"')
}
}
out.RawByte('}')
}
@ -1339,19 +1487,43 @@ func (x *BearerToken_Body_TokenLifetime) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "exp":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Exp = f
}
case "nbf":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Nbf = f
}
case "iat":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Iat = f
}
}
@ -1472,23 +1644,38 @@ func (x *BearerToken_Body_APEOverride) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"target\":"
out.RawString(prefix[1:])
x.Target.MarshalEasyJSON(out)
if x.Target != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"chains\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Chains {
if i != 0 {
if len(x.Chains) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Chains[i].MarshalEasyJSON(out)
const prefix string = "\"chains\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Chains {
if i != 0 {
out.RawByte(',')
}
x.Chains[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -1720,31 +1907,67 @@ func (x *BearerToken_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"eaclTable\":"
out.RawString(prefix[1:])
x.EaclTable.MarshalEasyJSON(out)
if x.EaclTable != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"eaclTable\":"
out.RawString(prefix)
x.EaclTable.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"lifetime\":"
out.RawString(prefix)
x.Lifetime.MarshalEasyJSON(out)
if x.Lifetime != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"lifetime\":"
out.RawString(prefix)
x.Lifetime.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"allowImpersonate\":"
out.RawString(prefix)
out.Bool(x.AllowImpersonate)
if x.AllowImpersonate {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"allowImpersonate\":"
out.RawString(prefix)
out.Bool(x.AllowImpersonate)
}
}
{
const prefix string = ",\"apeOverride\":"
out.RawString(prefix)
x.ApeOverride.MarshalEasyJSON(out)
if x.ApeOverride != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"apeOverride\":"
out.RawString(prefix)
x.ApeOverride.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1923,16 +2146,31 @@ func (x *BearerToken) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
if x.Signature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -155,16 +155,36 @@ func (x *ChainTarget) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"type\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Type))
if x.Type != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"type\":"
out.RawString(prefix)
v := int32(x.Type)
if vv, ok := TargetType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"name\":"
out.RawString(prefix)
out.String(x.Name)
if len(x.Name) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"name\":"
out.RawString(prefix)
out.String(x.Name)
}
}
out.RawByte('}')
}
@ -333,13 +353,21 @@ func (x *Chain) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
switch xx := x.Kind.(type) {
case *Chain_Raw:
{
const prefix string = ",\"raw\":"
out.RawString(prefix[1:])
out.Base64Bytes(xx.Raw)
if len(xx.Raw) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"raw\":"
out.RawString(prefix)
out.Base64Bytes(xx.Raw)
}
}
}
out.RawByte('}')

View file

@ -121,16 +121,31 @@ func (x *AddChainRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"target\":"
out.RawString(prefix[1:])
x.Target.MarshalEasyJSON(out)
if x.Target != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"chain\":"
out.RawString(prefix)
x.Chain.MarshalEasyJSON(out)
if x.Chain != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"chain\":"
out.RawString(prefix)
x.Chain.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -330,21 +345,43 @@ func (x *AddChainRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -484,11 +521,19 @@ func (x *AddChainResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"chainId\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.ChainId)
if len(x.ChainId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"chainId\":"
out.RawString(prefix)
out.Base64Bytes(x.ChainId)
}
}
out.RawByte('}')
}
@ -680,21 +725,43 @@ func (x *AddChainResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -857,16 +924,31 @@ func (x *RemoveChainRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"target\":"
out.RawString(prefix[1:])
x.Target.MarshalEasyJSON(out)
if x.Target != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"chainId\":"
out.RawString(prefix)
out.Base64Bytes(x.ChainId)
if len(x.ChainId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"chainId\":"
out.RawString(prefix)
out.Base64Bytes(x.ChainId)
}
}
out.RawByte('}')
}
@ -1065,21 +1147,43 @@ func (x *RemoveChainRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1381,21 +1485,43 @@ func (x *RemoveChainResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1538,11 +1664,19 @@ func (x *ListChainsRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"target\":"
out.RawString(prefix[1:])
x.Target.MarshalEasyJSON(out)
if x.Target != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1735,21 +1869,43 @@ func (x *ListChainsRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1895,18 +2051,26 @@ func (x *ListChainsResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"chains\":"
out.RawString(prefix[1:])
out.RawByte('[')
for i := range x.Chains {
if i != 0 {
if len(x.Chains) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Chains[i].MarshalEasyJSON(out)
const prefix string = "\"chains\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Chains {
if i != 0 {
out.RawByte(',')
}
x.Chains[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -2106,21 +2270,43 @@ func (x *ListChainsResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -762,3 +762,138 @@ func (r *ListResponse) FromGRPCMessage(m grpc.Message) error {
return r.ResponseHeaders.FromMessage(v)
}
func (r *ListStreamRequestBody) ToGRPCMessage() grpc.Message {
var m *container.ListStreamRequest_Body
if r != nil {
m = new(container.ListStreamRequest_Body)
m.SetOwnerId(r.ownerID.ToGRPCMessage().(*refsGRPC.OwnerID))
}
return m
}
func (r *ListStreamRequestBody) FromGRPCMessage(m grpc.Message) error {
v, ok := m.(*container.ListStreamRequest_Body)
if !ok {
return message.NewUnexpectedMessageType(m, v)
}
var err error
ownerID := v.GetOwnerId()
if ownerID == nil {
r.ownerID = nil
} else {
if r.ownerID == nil {
r.ownerID = new(refs.OwnerID)
}
err = r.ownerID.FromGRPCMessage(ownerID)
}
return err
}
func (r *ListStreamRequest) ToGRPCMessage() grpc.Message {
var m *container.ListStreamRequest
if r != nil {
m = new(container.ListStreamRequest)
m.SetBody(r.body.ToGRPCMessage().(*container.ListStreamRequest_Body))
r.RequestHeaders.ToMessage(m)
}
return m
}
func (r *ListStreamRequest) FromGRPCMessage(m grpc.Message) error {
v, ok := m.(*container.ListStreamRequest)
if !ok {
return message.NewUnexpectedMessageType(m, v)
}
var err error
body := v.GetBody()
if body == nil {
r.body = nil
} else {
if r.body == nil {
r.body = new(ListStreamRequestBody)
}
err = r.body.FromGRPCMessage(body)
if err != nil {
return err
}
}
return r.RequestHeaders.FromMessage(v)
}
func (r *ListStreamResponseBody) ToGRPCMessage() grpc.Message {
var m *container.ListStreamResponse_Body
if r != nil {
m = new(container.ListStreamResponse_Body)
m.SetContainerIds(refs.ContainerIDsToGRPCMessage(r.cidList))
}
return m
}
func (r *ListStreamResponseBody) FromGRPCMessage(m grpc.Message) error {
v, ok := m.(*container.ListStreamResponse_Body)
if !ok {
return message.NewUnexpectedMessageType(m, v)
}
var err error
r.cidList, err = refs.ContainerIDsFromGRPCMessage(v.GetContainerIds())
return err
}
func (r *ListStreamResponse) ToGRPCMessage() grpc.Message {
var m *container.ListStreamResponse
if r != nil {
m = new(container.ListStreamResponse)
m.SetBody(r.body.ToGRPCMessage().(*container.ListStreamResponse_Body))
r.ResponseHeaders.ToMessage(m)
}
return m
}
func (r *ListStreamResponse) FromGRPCMessage(m grpc.Message) error {
v, ok := m.(*container.ListStreamResponse)
if !ok {
return message.NewUnexpectedMessageType(m, v)
}
var err error
body := v.GetBody()
if body == nil {
r.body = nil
} else {
if r.body == nil {
r.body = new(ListStreamResponseBody)
}
err = r.body.FromGRPCMessage(body)
if err != nil {
return err
}
}
return r.ResponseHeaders.FromMessage(v)
}

File diff suppressed because it is too large Load diff

View file

@ -157,3 +157,41 @@ func DoFuzzJSONListResponse(data []byte) int {
}
return 1
}
func DoFuzzProtoListStreamRequest(data []byte) int {
msg := new(ListStreamRequest)
if err := msg.UnmarshalProtobuf(data); err != nil {
return 0
}
_ = msg.MarshalProtobuf(nil)
return 1
}
func DoFuzzJSONListStreamRequest(data []byte) int {
msg := new(ListStreamRequest)
if err := msg.UnmarshalJSON(data); err != nil {
return 0
}
_, err := msg.MarshalJSON()
if err != nil {
panic(err)
}
return 1
}
func DoFuzzProtoListStreamResponse(data []byte) int {
msg := new(ListStreamResponse)
if err := msg.UnmarshalProtobuf(data); err != nil {
return 0
}
_ = msg.MarshalProtobuf(nil)
return 1
}
func DoFuzzJSONListStreamResponse(data []byte) int {
msg := new(ListStreamResponse)
if err := msg.UnmarshalJSON(data); err != nil {
return 0
}
_, err := msg.MarshalJSON()
if err != nil {
panic(err)
}
return 1
}

View file

@ -89,3 +89,23 @@ func FuzzJSONListResponse(f *testing.F) {
DoFuzzJSONListResponse(data)
})
}
func FuzzProtoListStreamRequest(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
DoFuzzProtoListStreamRequest(data)
})
}
func FuzzJSONListStreamRequest(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
DoFuzzJSONListStreamRequest(data)
})
}
func FuzzProtoListStreamResponse(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
DoFuzzProtoListStreamResponse(data)
})
}
func FuzzJSONListStreamResponse(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
DoFuzzJSONListStreamResponse(data)
})
}

View file

@ -19,10 +19,11 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
ContainerService_Put_FullMethodName = "/neo.fs.v2.container.ContainerService/Put"
ContainerService_Delete_FullMethodName = "/neo.fs.v2.container.ContainerService/Delete"
ContainerService_Get_FullMethodName = "/neo.fs.v2.container.ContainerService/Get"
ContainerService_List_FullMethodName = "/neo.fs.v2.container.ContainerService/List"
ContainerService_Put_FullMethodName = "/neo.fs.v2.container.ContainerService/Put"
ContainerService_Delete_FullMethodName = "/neo.fs.v2.container.ContainerService/Delete"
ContainerService_Get_FullMethodName = "/neo.fs.v2.container.ContainerService/Get"
ContainerService_List_FullMethodName = "/neo.fs.v2.container.ContainerService/List"
ContainerService_ListStream_FullMethodName = "/neo.fs.v2.container.ContainerService/ListStream"
)
// ContainerServiceClient is the client API for ContainerService service.
@ -73,6 +74,16 @@ type ContainerServiceClient interface {
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
List(ctx context.Context, in *ListRequest, opts ...grpc.CallOption) (*ListResponse, error)
// Returns all owner's containers from 'Container` smart contract' storage
// via stream.
//
// Statuses:
// - **OK** (0, SECTION_SUCCESS): \
// container list has been successfully read;
// - Common failures (SECTION_FAILURE_COMMON);
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
ListStream(ctx context.Context, in *ListStreamRequest, opts ...grpc.CallOption) (ContainerService_ListStreamClient, error)
}
type containerServiceClient struct {
@ -119,6 +130,38 @@ func (c *containerServiceClient) List(ctx context.Context, in *ListRequest, opts
return out, nil
}
func (c *containerServiceClient) ListStream(ctx context.Context, in *ListStreamRequest, opts ...grpc.CallOption) (ContainerService_ListStreamClient, error) {
stream, err := c.cc.NewStream(ctx, &ContainerService_ServiceDesc.Streams[0], ContainerService_ListStream_FullMethodName, opts...)
if err != nil {
return nil, err
}
x := &containerServiceListStreamClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type ContainerService_ListStreamClient interface {
Recv() (*ListStreamResponse, error)
grpc.ClientStream
}
type containerServiceListStreamClient struct {
grpc.ClientStream
}
func (x *containerServiceListStreamClient) Recv() (*ListStreamResponse, error) {
m := new(ListStreamResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// ContainerServiceServer is the server API for ContainerService service.
// All implementations should embed UnimplementedContainerServiceServer
// for forward compatibility
@ -167,6 +210,16 @@ type ContainerServiceServer interface {
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
List(context.Context, *ListRequest) (*ListResponse, error)
// Returns all owner's containers from 'Container` smart contract' storage
// via stream.
//
// Statuses:
// - **OK** (0, SECTION_SUCCESS): \
// container list has been successfully read;
// - Common failures (SECTION_FAILURE_COMMON);
// - **CONTAINER_ACCESS_DENIED** (3074, SECTION_CONTAINER): \
// container list access denied.
ListStream(*ListStreamRequest, ContainerService_ListStreamServer) error
}
// UnimplementedContainerServiceServer should be embedded to have forward compatible implementations.
@ -185,6 +238,9 @@ func (UnimplementedContainerServiceServer) Get(context.Context, *GetRequest) (*G
func (UnimplementedContainerServiceServer) List(context.Context, *ListRequest) (*ListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
}
func (UnimplementedContainerServiceServer) ListStream(*ListStreamRequest, ContainerService_ListStreamServer) error {
return status.Errorf(codes.Unimplemented, "method ListStream not implemented")
}
// UnsafeContainerServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to ContainerServiceServer will
@ -269,6 +325,27 @@ func _ContainerService_List_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler)
}
func _ContainerService_ListStream_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(ListStreamRequest)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ContainerServiceServer).ListStream(m, &containerServiceListStreamServer{stream})
}
type ContainerService_ListStreamServer interface {
Send(*ListStreamResponse) error
grpc.ServerStream
}
type containerServiceListStreamServer struct {
grpc.ServerStream
}
func (x *containerServiceListStreamServer) Send(m *ListStreamResponse) error {
return x.ServerStream.SendMsg(m)
}
// ContainerService_ServiceDesc is the grpc.ServiceDesc for ContainerService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@ -293,6 +370,12 @@ var ContainerService_ServiceDesc = grpc.ServiceDesc{
Handler: _ContainerService_List_Handler,
},
},
Streams: []grpc.StreamDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "ListStream",
Handler: _ContainerService_ListStream_Handler,
ServerStreams: true,
},
},
Metadata: "container/grpc/service.proto",
}

View file

@ -13,6 +13,7 @@ import (
easyproto "github.com/VictoriaMetrics/easyproto"
jlexer "github.com/mailru/easyjson/jlexer"
jwriter "github.com/mailru/easyjson/jwriter"
strconv "strconv"
)
type Container_Attribute struct {
@ -115,16 +116,31 @@ func (x *Container_Attribute) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
out.RawByte('}')
}
@ -370,43 +386,86 @@ func (x *Container) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
}
{
const prefix string = ",\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
{
const prefix string = ",\"nonce\":"
out.RawString(prefix)
out.Base64Bytes(x.Nonce)
}
{
const prefix string = ",\"basicACL\":"
out.RawString(prefix)
out.Uint32(x.BasicAcl)
}
{
const prefix string = ",\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Attributes[i].MarshalEasyJSON(out)
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"placementPolicy\":"
out.RawString(prefix)
x.PlacementPolicy.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
if len(x.Nonce) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"nonce\":"
out.RawString(prefix)
out.Base64Bytes(x.Nonce)
}
}
{
if x.BasicAcl != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"basicACL\":"
out.RawString(prefix)
out.Uint32(x.BasicAcl)
}
}
{
if len(x.Attributes) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
out.RawByte(',')
}
x.Attributes[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if x.PlacementPolicy != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"placementPolicy\":"
out.RawString(prefix)
x.PlacementPolicy.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -459,7 +518,15 @@ func (x *Container) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "basicACL":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.BasicAcl = f
}
case "attributes":

View file

@ -343,3 +343,65 @@ func (r *ListResponseBody) StableSize() (size int) {
func (r *ListResponseBody) Unmarshal(data []byte) error {
return message.Unmarshal(r, data, new(container.ListResponse_Body))
}
func (r *ListStreamRequestBody) StableMarshal(buf []byte) []byte {
if r == nil {
return []byte{}
}
if buf == nil {
buf = make([]byte, r.StableSize())
}
protoutil.NestedStructureMarshal(listReqBodyOwnerField, buf, r.ownerID)
return buf
}
func (r *ListStreamRequestBody) StableSize() (size int) {
if r == nil {
return 0
}
size += protoutil.NestedStructureSize(listReqBodyOwnerField, r.ownerID)
return size
}
func (r *ListStreamRequestBody) Unmarshal(data []byte) error {
return message.Unmarshal(r, data, new(container.ListStreamRequest_Body))
}
func (r *ListStreamResponseBody) StableMarshal(buf []byte) []byte {
if r == nil {
return []byte{}
}
if buf == nil {
buf = make([]byte, r.StableSize())
}
var offset int
for i := range r.cidList {
offset += protoutil.NestedStructureMarshal(listRespBodyIDsField, buf[offset:], &r.cidList[i])
}
return buf
}
func (r *ListStreamResponseBody) StableSize() (size int) {
if r == nil {
return 0
}
for i := range r.cidList {
size += protoutil.NestedStructureSize(listRespBodyIDsField, &r.cidList[i])
}
return size
}
func (r *ListStreamResponseBody) Unmarshal(data []byte) error {
return message.Unmarshal(r, data, new(container.ListStreamResponse_Body))
}

View file

@ -109,6 +109,26 @@ type ListResponse struct {
session.ResponseHeaders
}
type ListStreamRequestBody struct {
ownerID *refs.OwnerID
}
type ListStreamRequest struct {
body *ListStreamRequestBody
session.RequestHeaders
}
type ListStreamResponseBody struct {
cidList []refs.ContainerID
}
type ListStreamResponse struct {
body *ListStreamResponseBody
session.ResponseHeaders
}
func (a *Attribute) GetKey() string {
if a != nil {
return a.key
@ -444,3 +464,51 @@ func (r *ListResponse) GetBody() *ListResponseBody {
func (r *ListResponse) SetBody(v *ListResponseBody) {
r.body = v
}
func (r *ListStreamRequestBody) GetOwnerID() *refs.OwnerID {
if r != nil {
return r.ownerID
}
return nil
}
func (r *ListStreamRequestBody) SetOwnerID(v *refs.OwnerID) {
r.ownerID = v
}
func (r *ListStreamRequest) GetBody() *ListStreamRequestBody {
if r != nil {
return r.body
}
return nil
}
func (r *ListStreamRequest) SetBody(v *ListStreamRequestBody) {
r.body = v
}
func (r *ListStreamResponseBody) GetContainerIDs() []refs.ContainerID {
if r != nil {
return r.cidList
}
return nil
}
func (r *ListStreamResponseBody) SetContainerIDs(v []refs.ContainerID) {
r.cidList = v
}
func (r *ListStreamResponse) GetBody() *ListStreamResponseBody {
if r != nil {
return r.body
}
return nil
}
func (r *ListStreamResponse) SetBody(v *ListStreamResponseBody) {
r.body = v
}

View file

@ -100,18 +100,26 @@ func (x *Lock) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"members\":"
out.RawString(prefix[1:])
out.RawByte('[')
for i := range x.Members {
if i != 0 {
if len(x.Members) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Members[i].MarshalEasyJSON(out)
const prefix string = "\"members\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Members {
if i != 0 {
out.RawByte(',')
}
x.Members[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}

View file

@ -257,21 +257,43 @@ func (x *LocalNodeInfoRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -437,16 +459,31 @@ func (x *LocalNodeInfoResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"nodeInfo\":"
out.RawString(prefix)
x.NodeInfo.MarshalEasyJSON(out)
if x.NodeInfo != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"nodeInfo\":"
out.RawString(prefix)
x.NodeInfo.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -646,21 +683,43 @@ func (x *LocalNodeInfoResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -962,21 +1021,43 @@ func (x *NetworkInfoRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1119,11 +1200,19 @@ func (x *NetworkInfoResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"networkInfo\":"
out.RawString(prefix[1:])
x.NetworkInfo.MarshalEasyJSON(out)
if x.NetworkInfo != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"networkInfo\":"
out.RawString(prefix)
x.NetworkInfo.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1316,21 +1405,43 @@ func (x *NetworkInfoResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1632,21 +1743,43 @@ func (x *NetmapSnapshotRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1789,11 +1922,19 @@ func (x *NetmapSnapshotResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"netmap\":"
out.RawString(prefix[1:])
x.Netmap.MarshalEasyJSON(out)
if x.Netmap != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"netmap\":"
out.RawString(prefix)
x.Netmap.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1986,21 +2127,43 @@ func (x *NetmapSnapshotResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -274,38 +274,79 @@ func (x *Filter) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"name\":"
out.RawString(prefix[1:])
out.String(x.Name)
}
{
const prefix string = ",\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
{
const prefix string = ",\"op\":"
out.RawString(prefix)
out.Int32(int32(x.Op))
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
{
const prefix string = ",\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
if len(x.Name) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Filters[i].MarshalEasyJSON(out)
const prefix string = "\"name\":"
out.RawString(prefix)
out.String(x.Name)
}
}
{
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
if x.Op != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"op\":"
out.RawString(prefix)
v := int32(x.Op)
if vv, ok := Operation_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
{
if len(x.Filters) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
out.RawByte(',')
}
x.Filters[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -558,31 +599,72 @@ func (x *Selector) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"name\":"
out.RawString(prefix[1:])
out.String(x.Name)
if len(x.Name) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"name\":"
out.RawString(prefix)
out.String(x.Name)
}
}
{
const prefix string = ",\"count\":"
out.RawString(prefix)
out.Uint32(x.Count)
if x.Count != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"count\":"
out.RawString(prefix)
out.Uint32(x.Count)
}
}
{
const prefix string = ",\"clause\":"
out.RawString(prefix)
out.Int32(int32(x.Clause))
if x.Clause != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"clause\":"
out.RawString(prefix)
v := int32(x.Clause)
if vv, ok := Clause_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"attribute\":"
out.RawString(prefix)
out.String(x.Attribute)
if len(x.Attribute) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"attribute\":"
out.RawString(prefix)
out.String(x.Attribute)
}
}
{
const prefix string = ",\"filter\":"
out.RawString(prefix)
out.String(x.Filter)
if len(x.Filter) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"filter\":"
out.RawString(prefix)
out.String(x.Filter)
}
}
out.RawByte('}')
}
@ -621,7 +703,15 @@ func (x *Selector) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "count":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Count = f
}
case "clause":
@ -807,26 +897,55 @@ func (x *Replica) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"count\":"
out.RawString(prefix[1:])
out.Uint32(x.Count)
if x.Count != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"count\":"
out.RawString(prefix)
out.Uint32(x.Count)
}
}
{
const prefix string = ",\"selector\":"
out.RawString(prefix)
out.String(x.Selector)
if len(x.Selector) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"selector\":"
out.RawString(prefix)
out.String(x.Selector)
}
}
{
const prefix string = ",\"ecDataCount\":"
out.RawString(prefix)
out.Uint32(x.EcDataCount)
if x.EcDataCount != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ecDataCount\":"
out.RawString(prefix)
out.Uint32(x.EcDataCount)
}
}
{
const prefix string = ",\"ecParityCount\":"
out.RawString(prefix)
out.Uint32(x.EcParityCount)
if x.EcParityCount != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ecParityCount\":"
out.RawString(prefix)
out.Uint32(x.EcParityCount)
}
}
out.RawByte('}')
}
@ -859,7 +978,15 @@ func (x *Replica) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "count":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Count = f
}
case "selector":
@ -871,13 +998,29 @@ func (x *Replica) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "ecDataCount":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.EcDataCount = f
}
case "ecParityCount":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.EcParityCount = f
}
}
@ -1067,52 +1210,88 @@ func (x *PlacementPolicy) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"replicas\":"
out.RawString(prefix[1:])
out.RawByte('[')
for i := range x.Replicas {
if i != 0 {
if len(x.Replicas) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Replicas[i].MarshalEasyJSON(out)
const prefix string = "\"replicas\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Replicas {
if i != 0 {
out.RawByte(',')
}
x.Replicas[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
{
const prefix string = ",\"containerBackupFactor\":"
out.RawString(prefix)
out.Uint32(x.ContainerBackupFactor)
}
{
const prefix string = ",\"selectors\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Selectors {
if i != 0 {
if x.ContainerBackupFactor != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Selectors[i].MarshalEasyJSON(out)
const prefix string = "\"containerBackupFactor\":"
out.RawString(prefix)
out.Uint32(x.ContainerBackupFactor)
}
out.RawByte(']')
}
{
const prefix string = ",\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
if len(x.Selectors) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Filters[i].MarshalEasyJSON(out)
const prefix string = "\"selectors\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Selectors {
if i != 0 {
out.RawByte(',')
}
x.Selectors[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
{
const prefix string = ",\"unique\":"
out.RawString(prefix)
out.Bool(x.Unique)
if len(x.Filters) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"filters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Filters {
if i != 0 {
out.RawByte(',')
}
x.Filters[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if x.Unique {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"unique\":"
out.RawString(prefix)
out.Bool(x.Unique)
}
}
out.RawByte('}')
}
@ -1159,7 +1338,15 @@ func (x *PlacementPolicy) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "containerBackupFactor":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.ContainerBackupFactor = f
}
case "selectors":
@ -1363,28 +1550,50 @@ func (x *NodeInfo_Attribute) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(x.Key)
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
{
const prefix string = ",\"parents\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Parents {
if i != 0 {
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
out.String(x.Parents[i])
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
{
if len(x.Parents) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parents\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Parents {
if i != 0 {
out.RawByte(',')
}
out.String(x.Parents[i])
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -1594,40 +1803,74 @@ func (x *NodeInfo) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"publicKey\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.PublicKey)
}
{
const prefix string = ",\"addresses\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Addresses {
if i != 0 {
if len(x.PublicKey) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
out.String(x.Addresses[i])
const prefix string = "\"publicKey\":"
out.RawString(prefix)
out.Base64Bytes(x.PublicKey)
}
out.RawByte(']')
}
{
const prefix string = ",\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
if len(x.Addresses) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Attributes[i].MarshalEasyJSON(out)
const prefix string = "\"addresses\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Addresses {
if i != 0 {
out.RawByte(',')
}
out.String(x.Addresses[i])
}
out.RawByte(']')
}
out.RawByte(']')
}
{
const prefix string = ",\"state\":"
out.RawString(prefix)
out.Int32(int32(x.State))
if len(x.Attributes) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
out.RawByte(',')
}
x.Attributes[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if x.State != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"state\":"
out.RawString(prefix)
v := int32(x.State)
if vv, ok := NodeInfo_State_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
out.RawByte('}')
}
@ -1827,23 +2070,40 @@ func (x *Netmap) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"epoch\":"
out.RawString(prefix[1:])
out.Uint64(x.Epoch)
if x.Epoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"epoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Epoch, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"nodes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Nodes {
if i != 0 {
if len(x.Nodes) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Nodes[i].MarshalEasyJSON(out)
const prefix string = "\"nodes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Nodes {
if i != 0 {
out.RawByte(',')
}
x.Nodes[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -1876,7 +2136,15 @@ func (x *Netmap) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "epoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Epoch = f
}
case "nodes":
@ -2002,16 +2270,31 @@ func (x *NetworkConfig_Parameter) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.Base64Bytes(x.Key)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
}
}
out.RawByte('}')
}
@ -2148,18 +2431,26 @@ func (x *NetworkConfig) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"parameters\":"
out.RawString(prefix[1:])
out.RawByte('[')
for i := range x.Parameters {
if i != 0 {
if len(x.Parameters) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Parameters[i].MarshalEasyJSON(out)
const prefix string = "\"parameters\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Parameters {
if i != 0 {
out.RawByte(',')
}
x.Parameters[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -2355,26 +2646,61 @@ func (x *NetworkInfo) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"currentEpoch\":"
out.RawString(prefix[1:])
out.Uint64(x.CurrentEpoch)
if x.CurrentEpoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"currentEpoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.CurrentEpoch, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"magicNumber\":"
out.RawString(prefix)
out.Uint64(x.MagicNumber)
if x.MagicNumber != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"magicNumber\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.MagicNumber, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"msPerBlock\":"
out.RawString(prefix)
out.Int64(x.MsPerBlock)
if x.MsPerBlock != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"msPerBlock\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendInt(out.Buffer.Buf, x.MsPerBlock, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"networkConfig\":"
out.RawString(prefix)
x.NetworkConfig.MarshalEasyJSON(out)
if x.NetworkConfig != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"networkConfig\":"
out.RawString(prefix)
x.NetworkConfig.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -2407,19 +2733,43 @@ func (x *NetworkInfo) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "currentEpoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.CurrentEpoch = f
}
case "magicNumber":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.MagicNumber = f
}
case "msPerBlock":
{
var f int64
f = in.Int64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := int64(v)
f = pv
x.MsPerBlock = f
}
case "networkConfig":

File diff suppressed because it is too large Load diff

View file

@ -304,41 +304,100 @@ func (x *ShortHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"creationEpoch\":"
out.RawString(prefix)
out.Uint64(x.CreationEpoch)
if x.CreationEpoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"creationEpoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.CreationEpoch, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"objectType\":"
out.RawString(prefix)
out.Int32(int32(x.ObjectType))
if x.ObjectType != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"objectType\":"
out.RawString(prefix)
v := int32(x.ObjectType)
if vv, ok := ObjectType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"payloadLength\":"
out.RawString(prefix)
out.Uint64(x.PayloadLength)
if x.PayloadLength != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"payloadLength\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.PayloadLength, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"payloadHash\":"
out.RawString(prefix)
x.PayloadHash.MarshalEasyJSON(out)
if x.PayloadHash != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"payloadHash\":"
out.RawString(prefix)
x.PayloadHash.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"homomorphicHash\":"
out.RawString(prefix)
x.HomomorphicHash.MarshalEasyJSON(out)
if x.HomomorphicHash != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"homomorphicHash\":"
out.RawString(prefix)
x.HomomorphicHash.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -378,7 +437,15 @@ func (x *ShortHeader) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "creationEpoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.CreationEpoch = f
}
case "ownerID":
@ -413,7 +480,15 @@ func (x *ShortHeader) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "payloadLength":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.PayloadLength = f
}
case "payloadHash":
@ -539,16 +614,31 @@ func (x *Header_Attribute) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
out.RawByte('}')
}
@ -797,43 +887,86 @@ func (x *Header_Split) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"parent\":"
out.RawString(prefix[1:])
x.Parent.MarshalEasyJSON(out)
}
{
const prefix string = ",\"previous\":"
out.RawString(prefix)
x.Previous.MarshalEasyJSON(out)
}
{
const prefix string = ",\"parentSignature\":"
out.RawString(prefix)
x.ParentSignature.MarshalEasyJSON(out)
}
{
const prefix string = ",\"parentHeader\":"
out.RawString(prefix)
x.ParentHeader.MarshalEasyJSON(out)
}
{
const prefix string = ",\"children\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Children {
if i != 0 {
if x.Parent != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Children[i].MarshalEasyJSON(out)
const prefix string = "\"parent\":"
out.RawString(prefix)
x.Parent.MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"splitID\":"
out.RawString(prefix)
out.Base64Bytes(x.SplitId)
if x.Previous != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"previous\":"
out.RawString(prefix)
x.Previous.MarshalEasyJSON(out)
}
}
{
if x.ParentSignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parentSignature\":"
out.RawString(prefix)
x.ParentSignature.MarshalEasyJSON(out)
}
}
{
if x.ParentHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parentHeader\":"
out.RawString(prefix)
x.ParentHeader.MarshalEasyJSON(out)
}
}
{
if len(x.Children) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"children\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Children {
if i != 0 {
out.RawByte(',')
}
x.Children[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if len(x.SplitId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"splitID\":"
out.RawString(prefix)
out.Base64Bytes(x.SplitId)
}
}
out.RawByte('}')
}
@ -1152,53 +1285,110 @@ func (x *Header_EC) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"parent\":"
out.RawString(prefix[1:])
x.Parent.MarshalEasyJSON(out)
}
{
const prefix string = ",\"index\":"
out.RawString(prefix)
out.Uint32(x.Index)
}
{
const prefix string = ",\"total\":"
out.RawString(prefix)
out.Uint32(x.Total)
}
{
const prefix string = ",\"headerLength\":"
out.RawString(prefix)
out.Uint32(x.HeaderLength)
}
{
const prefix string = ",\"header\":"
out.RawString(prefix)
out.Base64Bytes(x.Header)
}
{
const prefix string = ",\"parentSplitID\":"
out.RawString(prefix)
out.Base64Bytes(x.ParentSplitId)
}
{
const prefix string = ",\"parentSplitParentID\":"
out.RawString(prefix)
x.ParentSplitParentId.MarshalEasyJSON(out)
}
{
const prefix string = ",\"parentAttributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.ParentAttributes {
if i != 0 {
if x.Parent != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.ParentAttributes[i].MarshalEasyJSON(out)
const prefix string = "\"parent\":"
out.RawString(prefix)
x.Parent.MarshalEasyJSON(out)
}
}
{
if x.Index != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"index\":"
out.RawString(prefix)
out.Uint32(x.Index)
}
}
{
if x.Total != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"total\":"
out.RawString(prefix)
out.Uint32(x.Total)
}
}
{
if x.HeaderLength != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"headerLength\":"
out.RawString(prefix)
out.Uint32(x.HeaderLength)
}
}
{
if len(x.Header) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"header\":"
out.RawString(prefix)
out.Base64Bytes(x.Header)
}
}
{
if len(x.ParentSplitId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parentSplitID\":"
out.RawString(prefix)
out.Base64Bytes(x.ParentSplitId)
}
}
{
if x.ParentSplitParentId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parentSplitParentID\":"
out.RawString(prefix)
x.ParentSplitParentId.MarshalEasyJSON(out)
}
}
{
if len(x.ParentAttributes) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"parentAttributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.ParentAttributes {
if i != 0 {
out.RawByte(',')
}
x.ParentAttributes[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -1238,19 +1428,43 @@ func (x *Header_EC) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "index":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Index = f
}
case "total":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Total = f
}
case "headerLength":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.HeaderLength = f
}
case "header":
@ -1625,73 +1839,167 @@ func (x *Header) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
}
{
const prefix string = ",\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
{
const prefix string = ",\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
{
const prefix string = ",\"creationEpoch\":"
out.RawString(prefix)
out.Uint64(x.CreationEpoch)
}
{
const prefix string = ",\"payloadLength\":"
out.RawString(prefix)
out.Uint64(x.PayloadLength)
}
{
const prefix string = ",\"payloadHash\":"
out.RawString(prefix)
x.PayloadHash.MarshalEasyJSON(out)
}
{
const prefix string = ",\"objectType\":"
out.RawString(prefix)
out.Int32(int32(x.ObjectType))
}
{
const prefix string = ",\"homomorphicHash\":"
out.RawString(prefix)
x.HomomorphicHash.MarshalEasyJSON(out)
}
{
const prefix string = ",\"sessionToken\":"
out.RawString(prefix)
x.SessionToken.MarshalEasyJSON(out)
}
{
const prefix string = ",\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Attributes[i].MarshalEasyJSON(out)
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"split\":"
out.RawString(prefix)
x.Split.MarshalEasyJSON(out)
if x.ContainerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"ec\":"
out.RawString(prefix)
x.Ec.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
if x.CreationEpoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"creationEpoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.CreationEpoch, 10)
out.RawByte('"')
}
}
{
if x.PayloadLength != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"payloadLength\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.PayloadLength, 10)
out.RawByte('"')
}
}
{
if x.PayloadHash != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"payloadHash\":"
out.RawString(prefix)
x.PayloadHash.MarshalEasyJSON(out)
}
}
{
if x.ObjectType != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"objectType\":"
out.RawString(prefix)
v := int32(x.ObjectType)
if vv, ok := ObjectType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
if x.HomomorphicHash != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"homomorphicHash\":"
out.RawString(prefix)
x.HomomorphicHash.MarshalEasyJSON(out)
}
}
{
if x.SessionToken != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"sessionToken\":"
out.RawString(prefix)
x.SessionToken.MarshalEasyJSON(out)
}
}
{
if len(x.Attributes) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"attributes\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Attributes {
if i != 0 {
out.RawByte(',')
}
x.Attributes[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if x.Split != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"split\":"
out.RawString(prefix)
x.Split.MarshalEasyJSON(out)
}
}
{
if x.Ec != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ec\":"
out.RawString(prefix)
x.Ec.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1745,13 +2053,29 @@ func (x *Header) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "creationEpoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.CreationEpoch = f
}
case "payloadLength":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.PayloadLength = f
}
case "payloadHash":
@ -1983,26 +2307,55 @@ func (x *Object) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"objectID\":"
out.RawString(prefix[1:])
x.ObjectId.MarshalEasyJSON(out)
if x.ObjectId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"objectID\":"
out.RawString(prefix)
x.ObjectId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
if x.Signature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"header\":"
out.RawString(prefix)
x.Header.MarshalEasyJSON(out)
if x.Header != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"header\":"
out.RawString(prefix)
x.Header.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"payload\":"
out.RawString(prefix)
out.Base64Bytes(x.Payload)
if len(x.Payload) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"payload\":"
out.RawString(prefix)
out.Base64Bytes(x.Payload)
}
}
out.RawByte('}')
}
@ -2194,21 +2547,43 @@ func (x *SplitInfo) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"splitId\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.SplitId)
if len(x.SplitId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"splitId\":"
out.RawString(prefix)
out.Base64Bytes(x.SplitId)
}
}
{
const prefix string = ",\"lastPart\":"
out.RawString(prefix)
x.LastPart.MarshalEasyJSON(out)
if x.LastPart != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"lastPart\":"
out.RawString(prefix)
x.LastPart.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"link\":"
out.RawString(prefix)
x.Link.MarshalEasyJSON(out)
if x.Link != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"link\":"
out.RawString(prefix)
x.Link.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -2390,21 +2765,43 @@ func (x *ECInfo_Chunk) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"id\":"
out.RawString(prefix[1:])
x.Id.MarshalEasyJSON(out)
if x.Id != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"id\":"
out.RawString(prefix)
x.Id.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"index\":"
out.RawString(prefix)
out.Uint32(x.Index)
if x.Index != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"index\":"
out.RawString(prefix)
out.Uint32(x.Index)
}
}
{
const prefix string = ",\"total\":"
out.RawString(prefix)
out.Uint32(x.Total)
if x.Total != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"total\":"
out.RawString(prefix)
out.Uint32(x.Total)
}
}
out.RawByte('}')
}
@ -2444,13 +2841,29 @@ func (x *ECInfo_Chunk) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "index":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Index = f
}
case "total":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Total = f
}
}
@ -2548,18 +2961,26 @@ func (x *ECInfo) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"chunks\":"
out.RawString(prefix[1:])
out.RawByte('[')
for i := range x.Chunks {
if i != 0 {
if len(x.Chunks) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Chunks[i].MarshalEasyJSON(out)
const prefix string = "\"chunks\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Chunks {
if i != 0 {
out.RawByte(',')
}
x.Chunks[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}

View file

@ -190,16 +190,31 @@ func (x *Address) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"containerID\":"
out.RawString(prefix[1:])
x.ContainerId.MarshalEasyJSON(out)
if x.ContainerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"objectID\":"
out.RawString(prefix)
x.ObjectId.MarshalEasyJSON(out)
if x.ObjectId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"objectID\":"
out.RawString(prefix)
x.ObjectId.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -332,11 +347,19 @@ func (x *ObjectID) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"value\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
}
}
out.RawByte('}')
}
@ -461,11 +484,19 @@ func (x *ContainerID) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"value\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
}
}
out.RawByte('}')
}
@ -590,11 +621,19 @@ func (x *OwnerID) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"value\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
}
}
out.RawByte('}')
}
@ -739,16 +778,31 @@ func (x *Version) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"major\":"
out.RawString(prefix[1:])
out.Uint32(x.Major)
if x.Major != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"major\":"
out.RawString(prefix)
out.Uint32(x.Major)
}
}
{
const prefix string = ",\"minor\":"
out.RawString(prefix)
out.Uint32(x.Minor)
if x.Minor != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"minor\":"
out.RawString(prefix)
out.Uint32(x.Minor)
}
}
out.RawByte('}')
}
@ -781,13 +835,29 @@ func (x *Version) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "major":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Major = f
}
case "minor":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Minor = f
}
}
@ -919,21 +989,48 @@ func (x *Signature) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.Base64Bytes(x.Key)
}
}
{
const prefix string = ",\"signature\":"
out.RawString(prefix)
out.Base64Bytes(x.Sign)
if len(x.Sign) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"signature\":"
out.RawString(prefix)
out.Base64Bytes(x.Sign)
}
}
{
const prefix string = ",\"scheme\":"
out.RawString(prefix)
out.Int32(int32(x.Scheme))
if x.Scheme != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"scheme\":"
out.RawString(prefix)
v := int32(x.Scheme)
if vv, ok := SignatureScheme_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
out.RawByte('}')
}
@ -1106,16 +1203,31 @@ func (x *SignatureRFC6979) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.Base64Bytes(x.Key)
}
}
{
const prefix string = ",\"signature\":"
out.RawString(prefix)
out.Base64Bytes(x.Sign)
if len(x.Sign) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"signature\":"
out.RawString(prefix)
out.Base64Bytes(x.Sign)
}
}
out.RawByte('}')
}
@ -1266,16 +1378,36 @@ func (x *Checksum) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"type\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Type))
if x.Type != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"type\":"
out.RawString(prefix)
v := int32(x.Type)
if vv, ok := ChecksumType_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"sum\":"
out.RawString(prefix)
out.Base64Bytes(x.Sum)
if len(x.Sum) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"sum\":"
out.RawString(prefix)
out.Base64Bytes(x.Sum)
}
}
out.RawByte('}')
}

View file

@ -13,6 +13,7 @@ const (
rpcContainerGet = "Get"
rpcContainerDel = "Delete"
rpcContainerList = "List"
rpcContainerStream = "ListStream"
rpcContainerGetEACL = "GetExtendedACL"
rpcContainerUsedSpace = "AnnounceUsedSpace"
)
@ -80,3 +81,27 @@ func ListContainers(
return resp, nil
}
type ListStreamResponseReader struct {
r client.MessageReader
}
func (r *ListStreamResponseReader) Read(resp *container.ListStreamResponse) error {
return r.r.ReadMessage(resp)
}
// ListContainersStream executes ContainerService.ListStream RPC.
func ListContainersStream(
cli *client.Client,
req *container.ListStreamRequest,
opts ...client.CallOption,
) (*ListStreamResponseReader, error) {
wc, err := client.OpenServerStream(cli, common.CallMethodInfoServerStream(serviceContainer, rpcContainerList), req, opts...)
if err != nil {
return nil, err
}
return &ListStreamResponseReader{
r: wc,
}, nil
}

View file

@ -12,6 +12,7 @@ import (
easyproto "github.com/VictoriaMetrics/easyproto"
jlexer "github.com/mailru/easyjson/jlexer"
jwriter "github.com/mailru/easyjson/jwriter"
strconv "strconv"
)
type CreateRequest_Body struct {
@ -117,16 +118,33 @@ func (x *CreateRequest_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"ownerId\":"
out.RawString(prefix[1:])
x.OwnerId.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerId\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"expiration\":"
out.RawString(prefix)
out.Uint64(x.Expiration)
if x.Expiration != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"expiration\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Expiration, 10)
out.RawByte('"')
}
}
out.RawByte('}')
}
@ -166,7 +184,15 @@ func (x *CreateRequest_Body) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "expiration":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Expiration = f
}
}
@ -325,21 +351,43 @@ func (x *CreateRequest) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -499,16 +547,31 @@ func (x *CreateResponse_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"id\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Id)
if len(x.Id) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"id\":"
out.RawString(prefix)
out.Base64Bytes(x.Id)
}
}
{
const prefix string = ",\"sessionKey\":"
out.RawString(prefix)
out.Base64Bytes(x.SessionKey)
if len(x.SessionKey) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"sessionKey\":"
out.RawString(prefix)
out.Base64Bytes(x.SessionKey)
}
}
out.RawByte('}')
}
@ -706,21 +769,43 @@ func (x *CreateResponse) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
if x.MetaHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaHeader\":"
out.RawString(prefix)
x.MetaHeader.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
if x.VerifyHeader != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verifyHeader\":"
out.RawString(prefix)
x.VerifyHeader.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -179,23 +179,38 @@ func (x *ObjectSessionContext_Target) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"container\":"
out.RawString(prefix[1:])
x.Container.MarshalEasyJSON(out)
if x.Container != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"container\":"
out.RawString(prefix)
x.Container.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"objects\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Objects {
if i != 0 {
if len(x.Objects) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Objects[i].MarshalEasyJSON(out)
const prefix string = "\"objects\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Objects {
if i != 0 {
out.RawByte(',')
}
x.Objects[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -358,16 +373,36 @@ func (x *ObjectSessionContext) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"verb\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Verb))
if x.Verb != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verb\":"
out.RawString(prefix)
v := int32(x.Verb)
if vv, ok := ObjectSessionContext_Verb_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
if x.Target != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"target\":"
out.RawString(prefix)
x.Target.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -596,21 +631,48 @@ func (x *ContainerSessionContext) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"verb\":"
out.RawString(prefix[1:])
out.Int32(int32(x.Verb))
if x.Verb != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"verb\":"
out.RawString(prefix)
v := int32(x.Verb)
if vv, ok := ContainerSessionContext_Verb_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
}
{
const prefix string = ",\"wildcard\":"
out.RawString(prefix)
out.Bool(x.Wildcard)
if x.Wildcard {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"wildcard\":"
out.RawString(prefix)
out.Bool(x.Wildcard)
}
}
{
const prefix string = ",\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
if x.ContainerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"containerID\":"
out.RawString(prefix)
x.ContainerId.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -804,21 +866,49 @@ func (x *SessionToken_Body_TokenLifetime) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"exp\":"
out.RawString(prefix[1:])
out.Uint64(x.Exp)
if x.Exp != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"exp\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Exp, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"nbf\":"
out.RawString(prefix)
out.Uint64(x.Nbf)
if x.Nbf != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"nbf\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Nbf, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"iat\":"
out.RawString(prefix)
out.Uint64(x.Iat)
if x.Iat != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"iat\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Iat, 10)
out.RawByte('"')
}
}
out.RawByte('}')
}
@ -851,19 +941,43 @@ func (x *SessionToken_Body_TokenLifetime) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "exp":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Exp = f
}
case "nbf":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Nbf = f
}
case "iat":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Iat = f
}
}
@ -1085,39 +1199,82 @@ func (x *SessionToken_Body) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"id\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.Id)
if len(x.Id) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"id\":"
out.RawString(prefix)
out.Base64Bytes(x.Id)
}
}
{
const prefix string = ",\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
if x.OwnerId != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ownerID\":"
out.RawString(prefix)
x.OwnerId.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"lifetime\":"
out.RawString(prefix)
x.Lifetime.MarshalEasyJSON(out)
if x.Lifetime != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"lifetime\":"
out.RawString(prefix)
x.Lifetime.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"sessionKey\":"
out.RawString(prefix)
out.Base64Bytes(x.SessionKey)
if len(x.SessionKey) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"sessionKey\":"
out.RawString(prefix)
out.Base64Bytes(x.SessionKey)
}
}
switch xx := x.Context.(type) {
case *SessionToken_Body_Object:
{
const prefix string = ",\"object\":"
out.RawString(prefix)
xx.Object.MarshalEasyJSON(out)
if xx.Object != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"object\":"
out.RawString(prefix)
xx.Object.MarshalEasyJSON(out)
}
}
case *SessionToken_Body_Container:
{
const prefix string = ",\"container\":"
out.RawString(prefix)
xx.Container.MarshalEasyJSON(out)
if xx.Container != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"container\":"
out.RawString(prefix)
xx.Container.MarshalEasyJSON(out)
}
}
}
out.RawByte('}')
@ -1323,16 +1480,31 @@ func (x *SessionToken) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"body\":"
out.RawString(prefix[1:])
x.Body.MarshalEasyJSON(out)
if x.Body != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"body\":"
out.RawString(prefix)
x.Body.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
if x.Signature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"signature\":"
out.RawString(prefix)
x.Signature.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -1485,16 +1657,31 @@ func (x *XHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"key\":"
out.RawString(prefix[1:])
out.String(x.Key)
if len(x.Key) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"key\":"
out.RawString(prefix)
out.String(x.Key)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.String(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.String(x.Value)
}
}
out.RawByte('}')
}
@ -1783,53 +1970,114 @@ func (x *RequestMetaHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
}
{
const prefix string = ",\"epoch\":"
out.RawString(prefix)
out.Uint64(x.Epoch)
}
{
const prefix string = ",\"ttl\":"
out.RawString(prefix)
out.Uint32(x.Ttl)
}
{
const prefix string = ",\"xHeaders\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.XHeaders {
if i != 0 {
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.XHeaders[i].MarshalEasyJSON(out)
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"sessionToken\":"
out.RawString(prefix)
x.SessionToken.MarshalEasyJSON(out)
if x.Epoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"epoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Epoch, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"bearerToken\":"
out.RawString(prefix)
x.BearerToken.MarshalEasyJSON(out)
if x.Ttl != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ttl\":"
out.RawString(prefix)
out.Uint32(x.Ttl)
}
}
{
const prefix string = ",\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
if len(x.XHeaders) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"xHeaders\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.XHeaders {
if i != 0 {
out.RawByte(',')
}
x.XHeaders[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
const prefix string = ",\"magicNumber\":"
out.RawString(prefix)
out.Uint64(x.MagicNumber)
if x.SessionToken != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"sessionToken\":"
out.RawString(prefix)
x.SessionToken.MarshalEasyJSON(out)
}
}
{
if x.BearerToken != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"bearerToken\":"
out.RawString(prefix)
x.BearerToken.MarshalEasyJSON(out)
}
}
{
if x.Origin != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
}
}
{
if x.MagicNumber != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"magicNumber\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.MagicNumber, 10)
out.RawByte('"')
}
}
out.RawByte('}')
}
@ -1869,13 +2117,29 @@ func (x *RequestMetaHeader) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "epoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Epoch = f
}
case "ttl":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Ttl = f
}
case "xHeaders":
@ -1916,7 +2180,15 @@ func (x *RequestMetaHeader) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "magicNumber":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.MagicNumber = f
}
}
@ -2123,43 +2395,88 @@ func (x *ResponseMetaHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"version\":"
out.RawString(prefix[1:])
x.Version.MarshalEasyJSON(out)
}
{
const prefix string = ",\"epoch\":"
out.RawString(prefix)
out.Uint64(x.Epoch)
}
{
const prefix string = ",\"ttl\":"
out.RawString(prefix)
out.Uint32(x.Ttl)
}
{
const prefix string = ",\"xHeaders\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.XHeaders {
if i != 0 {
if x.Version != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
x.XHeaders[i].MarshalEasyJSON(out)
const prefix string = "\"version\":"
out.RawString(prefix)
x.Version.MarshalEasyJSON(out)
}
out.RawByte(']')
}
{
const prefix string = ",\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
if x.Epoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"epoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.Epoch, 10)
out.RawByte('"')
}
}
{
const prefix string = ",\"status\":"
out.RawString(prefix)
x.Status.MarshalEasyJSON(out)
if x.Ttl != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"ttl\":"
out.RawString(prefix)
out.Uint32(x.Ttl)
}
}
{
if len(x.XHeaders) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"xHeaders\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.XHeaders {
if i != 0 {
out.RawByte(',')
}
x.XHeaders[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
}
{
if x.Origin != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
}
}
{
if x.Status != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"status\":"
out.RawString(prefix)
x.Status.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -2199,13 +2516,29 @@ func (x *ResponseMetaHeader) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "epoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.Epoch = f
}
case "ttl":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Ttl = f
}
case "xHeaders":
@ -2397,26 +2730,55 @@ func (x *RequestVerificationHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"bodySignature\":"
out.RawString(prefix[1:])
x.BodySignature.MarshalEasyJSON(out)
if x.BodySignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"bodySignature\":"
out.RawString(prefix)
x.BodySignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaSignature\":"
out.RawString(prefix)
x.MetaSignature.MarshalEasyJSON(out)
if x.MetaSignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaSignature\":"
out.RawString(prefix)
x.MetaSignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"originSignature\":"
out.RawString(prefix)
x.OriginSignature.MarshalEasyJSON(out)
if x.OriginSignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"originSignature\":"
out.RawString(prefix)
x.OriginSignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
if x.Origin != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}
@ -2635,26 +2997,55 @@ func (x *ResponseVerificationHeader) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"bodySignature\":"
out.RawString(prefix[1:])
x.BodySignature.MarshalEasyJSON(out)
if x.BodySignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"bodySignature\":"
out.RawString(prefix)
x.BodySignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"metaSignature\":"
out.RawString(prefix)
x.MetaSignature.MarshalEasyJSON(out)
if x.MetaSignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"metaSignature\":"
out.RawString(prefix)
x.MetaSignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"originSignature\":"
out.RawString(prefix)
x.OriginSignature.MarshalEasyJSON(out)
if x.OriginSignature != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"originSignature\":"
out.RawString(prefix)
x.OriginSignature.MarshalEasyJSON(out)
}
}
{
const prefix string = ",\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
if x.Origin != nil {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"origin\":"
out.RawString(prefix)
x.Origin.MarshalEasyJSON(out)
}
}
out.RawByte('}')
}

View file

@ -46,6 +46,10 @@ func serviceMessageBody(req any) stableMarshaler {
return v.GetBody()
case *container.ListResponse:
return v.GetBody()
case *container.ListStreamRequest:
return v.GetBody()
case *container.ListStreamResponse:
return v.GetBody()
/* Object */
case *object.PutRequest:

View file

@ -368,16 +368,31 @@ func (x *Status_Detail) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"id\":"
out.RawString(prefix[1:])
out.Uint32(x.Id)
if x.Id != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"id\":"
out.RawString(prefix)
out.Uint32(x.Id)
}
}
{
const prefix string = ",\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
if len(x.Value) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"value\":"
out.RawString(prefix)
out.Base64Bytes(x.Value)
}
}
out.RawByte('}')
}
@ -410,7 +425,15 @@ func (x *Status_Detail) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "id":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Id = f
}
case "value":
@ -554,28 +577,50 @@ func (x *Status) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"code\":"
out.RawString(prefix[1:])
out.Uint32(x.Code)
}
{
const prefix string = ",\"message\":"
out.RawString(prefix)
out.String(x.Message)
}
{
const prefix string = ",\"details\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Details {
if i != 0 {
if x.Code != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Details[i].MarshalEasyJSON(out)
const prefix string = "\"code\":"
out.RawString(prefix)
out.Uint32(x.Code)
}
}
{
if len(x.Message) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"message\":"
out.RawString(prefix)
out.String(x.Message)
}
}
{
if len(x.Details) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"details\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Details {
if i != 0 {
out.RawByte(',')
}
x.Details[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -608,7 +653,15 @@ func (x *Status) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "code":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.Code = f
}
case "message":

View file

@ -12,6 +12,7 @@ import (
easyproto "github.com/VictoriaMetrics/easyproto"
jlexer "github.com/mailru/easyjson/jlexer"
jwriter "github.com/mailru/easyjson/jwriter"
strconv "strconv"
)
type Tombstone struct {
@ -140,28 +141,52 @@ func (x *Tombstone) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"expirationEpoch\":"
out.RawString(prefix[1:])
out.Uint64(x.ExpirationEpoch)
}
{
const prefix string = ",\"splitID\":"
out.RawString(prefix)
out.Base64Bytes(x.SplitId)
}
{
const prefix string = ",\"members\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Members {
if i != 0 {
if x.ExpirationEpoch != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
x.Members[i].MarshalEasyJSON(out)
const prefix string = "\"expirationEpoch\":"
out.RawString(prefix)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.ExpirationEpoch, 10)
out.RawByte('"')
}
}
{
if len(x.SplitId) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"splitID\":"
out.RawString(prefix)
out.Base64Bytes(x.SplitId)
}
}
{
if len(x.Members) != 0 {
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"members\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.Members {
if i != 0 {
out.RawByte(',')
}
x.Members[i].MarshalEasyJSON(out)
}
out.RawByte(']')
}
out.RawByte(']')
}
out.RawByte('}')
}
@ -194,7 +219,15 @@ func (x *Tombstone) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "expirationEpoch":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.ExpirationEpoch = f
}
case "splitID":

View file

@ -26,11 +26,34 @@ func nonZero[T protoInt]() T {
func TestStableMarshalSingle(t *testing.T) {
t.Run("empty", func(t *testing.T) {
input := &generated.Primitives{}
require.Zero(t, input.StableSize())
t.Run("proto", func(t *testing.T) {
input := &generated.Primitives{}
require.Zero(t, input.StableSize())
r := input.MarshalProtobuf(nil)
require.Empty(t, r)
r := input.MarshalProtobuf(nil)
require.Empty(t, r)
})
t.Run("json", func(t *testing.T) {
input := &generated.Primitives{}
r, err := input.MarshalJSON()
require.NoError(t, err)
require.NotEmpty(t, r)
var actual test.Primitives
require.NoError(t, protojson.Unmarshal(r, &actual))
t.Run("protojson compatibility", func(t *testing.T) {
data, err := protojson.MarshalOptions{EmitUnpopulated: true}.Marshal(&actual)
require.NoError(t, err)
require.JSONEq(t, string(data), string(r))
})
var actualFrostfs generated.Primitives
require.NoError(t, actualFrostfs.UnmarshalJSON(r))
require.Equal(t, input, &actualFrostfs)
primitivesEqual(t, input, &actual)
})
})
marshalCases := []struct {
@ -77,8 +100,7 @@ func TestStableMarshalSingle(t *testing.T) {
require.NoError(t, protojson.Unmarshal(r, &actual))
t.Run("protojson compatibility", func(t *testing.T) {
t.Skip()
data, err := protojson.Marshal(&actual)
data, err := protojson.MarshalOptions{EmitUnpopulated: true}.Marshal(&actual)
require.NoError(t, err)
require.JSONEq(t, string(data), string(r))
})
@ -95,6 +117,7 @@ func TestStableMarshalSingle(t *testing.T) {
func primitivesEqual(t *testing.T, a *generated.Primitives, b *test.Primitives) {
// Compare each field directly, because proto-generated code has private fields.
require.Equal(t, len(a.FieldA), len(b.FieldA))
require.Equal(t, a.FieldA, b.FieldA)
require.Equal(t, a.FieldB, b.FieldB)
require.Equal(t, a.FieldC, b.FieldC)

View file

@ -130,10 +130,16 @@ func (x *Primitives_Aux) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"innerField\":"
out.RawString(prefix[1:])
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"innerField\":"
out.RawString(prefix)
out.Uint32(x.InnerField)
}
out.RawByte('}')
@ -167,7 +173,15 @@ func (x *Primitives_Aux) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "innerField":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.InnerField = f
}
}
@ -560,78 +574,168 @@ func (x *Primitives) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"fieldA\":"
out.RawString(prefix[1:])
out.Base64Bytes(x.FieldA)
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldA\":"
out.RawString(prefix)
if x.FieldA != nil {
out.Base64Bytes(x.FieldA)
} else {
out.String("")
}
}
{
const prefix string = ",\"fieldB\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldB\":"
out.RawString(prefix)
out.String(x.FieldB)
}
{
const prefix string = ",\"fieldC\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldC\":"
out.RawString(prefix)
out.Bool(x.FieldC)
}
{
const prefix string = ",\"fieldD\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldD\":"
out.RawString(prefix)
out.Int32(x.FieldD)
}
{
const prefix string = ",\"fieldE\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldE\":"
out.RawString(prefix)
out.Uint32(x.FieldE)
}
{
const prefix string = ",\"fieldF\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldF\":"
out.RawString(prefix)
out.Int64(x.FieldF)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendInt(out.Buffer.Buf, x.FieldF, 10)
out.RawByte('"')
}
{
const prefix string = ",\"fieldG\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldG\":"
out.RawString(prefix)
out.Uint64(x.FieldG)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.FieldG, 10)
out.RawByte('"')
}
{
const prefix string = ",\"fieldI\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldI\":"
out.RawString(prefix)
out.Uint64(x.FieldI)
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.FieldI, 10)
out.RawByte('"')
}
{
const prefix string = ",\"fieldJ\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldJ\":"
out.RawString(prefix)
out.Float64(x.FieldJ)
}
{
const prefix string = ",\"fieldK\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldK\":"
out.RawString(prefix)
out.Uint32(x.FieldK)
}
{
const prefix string = ",\"fieldH\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldH\":"
out.RawString(prefix)
out.Int32(int32(x.FieldH))
v := int32(x.FieldH)
if vv, ok := Primitives_SomeEnum_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}
}
switch xx := x.FieldM.(type) {
case *Primitives_FieldMa:
{
const prefix string = ",\"fieldMa\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldMa\":"
out.RawString(prefix)
out.Base64Bytes(xx.FieldMa)
if xx.FieldMa != nil {
out.Base64Bytes(xx.FieldMa)
} else {
out.String("")
}
}
case *Primitives_FieldMe:
{
const prefix string = ",\"fieldMe\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldMe\":"
out.RawString(prefix)
out.Uint32(xx.FieldMe)
}
case *Primitives_FieldAux:
{
const prefix string = ",\"fieldAux\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldAux\":"
out.RawString(prefix)
xx.FieldAux.MarshalEasyJSON(out)
}
@ -667,7 +771,13 @@ func (x *Primitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "fieldA":
{
var f []byte
f = in.Bytes()
{
tmp := in.Bytes()
if len(tmp) == 0 {
tmp = nil
}
f = tmp
}
x.FieldA = f
}
case "fieldB":
@ -685,31 +795,71 @@ func (x *Primitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "fieldD":
{
var f int32
f = in.Int32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := int32(v)
f = pv
x.FieldD = f
}
case "fieldE":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.FieldE = f
}
case "fieldF":
{
var f int64
f = in.Int64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := int64(v)
f = pv
x.FieldF = f
}
case "fieldG":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.FieldG = f
}
case "fieldI":
{
var f uint64
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
x.FieldI = f
}
case "fieldJ":
@ -721,7 +871,15 @@ func (x *Primitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "fieldK":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.FieldK = f
}
case "fieldH":
@ -751,7 +909,13 @@ func (x *Primitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
x.FieldM = xx
{
var f []byte
f = in.Bytes()
{
tmp := in.Bytes()
if len(tmp) == 0 {
tmp = nil
}
f = tmp
}
xx.FieldMa = f
}
case "fieldMe":
@ -759,7 +923,15 @@ func (x *Primitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
x.FieldM = xx
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
xx.FieldMe = f
}
case "fieldAux":
@ -882,10 +1054,16 @@ func (x *RepPrimitives_Aux) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"innerField\":"
out.RawString(prefix[1:])
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"innerField\":"
out.RawString(prefix)
out.Uint32(x.InnerField)
}
out.RawByte('}')
@ -919,7 +1097,15 @@ func (x *RepPrimitives_Aux) UnmarshalEasyJSON(in *jlexer.Lexer) {
case "innerField":
{
var f uint32
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
x.InnerField = f
}
}
@ -1164,21 +1350,36 @@ func (x *RepPrimitives) MarshalEasyJSON(out *jwriter.Writer) {
out.RawString("null")
return
}
first := true
out.RawByte('{')
{
const prefix string = ",\"fieldA\":"
out.RawString(prefix[1:])
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldA\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldA {
if i != 0 {
out.RawByte(',')
}
out.Base64Bytes(x.FieldA[i])
if x.FieldA[i] != nil {
out.Base64Bytes(x.FieldA[i])
} else {
out.String("")
}
}
out.RawByte(']')
}
{
const prefix string = ",\"fieldB\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldB\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldB {
@ -1190,7 +1391,12 @@ func (x *RepPrimitives) MarshalEasyJSON(out *jwriter.Writer) {
out.RawByte(']')
}
{
const prefix string = ",\"fieldC\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldC\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldC {
@ -1202,7 +1408,12 @@ func (x *RepPrimitives) MarshalEasyJSON(out *jwriter.Writer) {
out.RawByte(']')
}
{
const prefix string = ",\"fieldD\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldD\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldD {
@ -1214,43 +1425,69 @@ func (x *RepPrimitives) MarshalEasyJSON(out *jwriter.Writer) {
out.RawByte(']')
}
{
const prefix string = ",\"fieldE\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldE\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldE {
if i != 0 {
out.RawByte(',')
}
out.Int64(x.FieldE[i])
out.RawByte('"')
out.Buffer.Buf = strconv.AppendInt(out.Buffer.Buf, x.FieldE[i], 10)
out.RawByte('"')
}
out.RawByte(']')
}
{
const prefix string = ",\"fieldF\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldF\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldF {
if i != 0 {
out.RawByte(',')
}
out.Uint64(x.FieldF[i])
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.FieldF[i], 10)
out.RawByte('"')
}
out.RawByte(']')
}
{
const prefix string = ",\"fieldFu\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldFu\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldFu {
if i != 0 {
out.RawByte(',')
}
out.Uint64(x.FieldFu[i])
out.RawByte('"')
out.Buffer.Buf = strconv.AppendUint(out.Buffer.Buf, x.FieldFu[i], 10)
out.RawByte('"')
}
out.RawByte(']')
}
{
const prefix string = ",\"fieldAux\":"
if !first {
out.RawByte(',')
} else {
first = false
}
const prefix string = "\"fieldAux\":"
out.RawString(prefix)
out.RawByte('[')
for i := range x.FieldAux {
@ -1295,7 +1532,13 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list [][]byte
in.Delim('[')
for !in.IsDelim(']') {
f = in.Bytes()
{
tmp := in.Bytes()
if len(tmp) == 0 {
tmp = nil
}
f = tmp
}
list = append(list, f)
in.WantComma()
}
@ -1321,7 +1564,15 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list []int32
in.Delim('[')
for !in.IsDelim(']') {
f = in.Int32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := int32(v)
f = pv
list = append(list, f)
in.WantComma()
}
@ -1334,7 +1585,15 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list []uint32
in.Delim('[')
for !in.IsDelim(']') {
f = in.Uint32()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 32)
if err != nil {
in.AddError(err)
return
}
pv := uint32(v)
f = pv
list = append(list, f)
in.WantComma()
}
@ -1347,7 +1606,15 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list []int64
in.Delim('[')
for !in.IsDelim(']') {
f = in.Int64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseInt(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := int64(v)
f = pv
list = append(list, f)
in.WantComma()
}
@ -1360,7 +1627,15 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list []uint64
in.Delim('[')
for !in.IsDelim(']') {
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
list = append(list, f)
in.WantComma()
}
@ -1373,7 +1648,15 @@ func (x *RepPrimitives) UnmarshalEasyJSON(in *jlexer.Lexer) {
var list []uint64
in.Delim('[')
for !in.IsDelim(']') {
f = in.Uint64()
r := in.JsonNumber()
n := r.String()
v, err := strconv.ParseUint(n, 10, 64)
if err != nil {
in.AddError(err)
return
}
pv := uint64(v)
f = pv
list = append(list, f)
in.WantComma()
}

View file

@ -59,6 +59,35 @@ func emitJSONUnmarshal(g *protogen.GeneratedFile, msg *protogen.Message) {
g.P("}")
}
func emitJSONParseInteger(g *protogen.GeneratedFile, ident string, method string, bitSize int, typ string) {
g.P("r := in.JsonNumber()")
g.P("n := r.String()")
g.P("v, err := ", strconvPackage.Ident(method), "(n, 10, ", bitSize, ")")
g.P("if err != nil {")
g.P(" in.AddError(err)")
g.P(" return")
g.P("}")
g.P(ident, " := ", typ, "(v)")
}
func emitJSONReadEnum(g *protogen.GeneratedFile, name string, enumType string) {
g.P(`switch v := in.Interface().(type) {
case string:
if vv, ok := `+enumType+`_value[v]; ok {
`+name+` = `+enumType+`(vv)
break
}
vv, err := `, strconvPackage.Ident("ParseInt"), `(v, 10, 32)
if err != nil {
in.AddError(err)
return
}
`+name+` = `+enumType+`(vv)
case float64:
`+name+` = `+enumType+`(v)
}`)
}
func emitJSONFieldRead(g *protogen.GeneratedFile, f *protogen.Field, name string) {
g.P("{")
defer g.P("}")
@ -83,30 +112,20 @@ func emitJSONFieldRead(g *protogen.GeneratedFile, f *protogen.Field, name string
enumType := fieldType(g, f).String()
g.P("var parsedValue " + enumType)
g.P(`switch v := in.Interface().(type) {
case string:
if vv, ok := `+enumType+`_value[v]; ok {
parsedValue = `+enumType+`(vv)
break
}
vv, err := `, strconvPackage.Ident("ParseInt"), `(v, 10, 32)
if err != nil {
in.AddError(err)
return
}
parsedValue = `+enumType+`(vv)
case float64:
parsedValue = `+enumType+`(v)
}`)
emitJSONReadEnum(g, "parsedValue", enumType)
template = "%s = parsedValue"
case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
template = "%s = in.Int32()"
emitJSONParseInteger(g, "pv", "ParseInt", 32, "int32")
template = "%s = pv"
case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
template = "%s = in.Uint32()"
emitJSONParseInteger(g, "pv", "ParseUint", 32, "uint32")
template = "%s = pv"
case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
template = "%s = in.Int64()"
emitJSONParseInteger(g, "pv", "ParseInt", 64, "int64")
template = "%s = pv"
case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
template = "%s = in.Uint64()"
emitJSONParseInteger(g, "pv", "ParseUint", 64, "uint64")
template = "%s = pv"
case protoreflect.FloatKind:
template = "%s = in.Float32()"
case protoreflect.DoubleKind:
@ -114,7 +133,17 @@ func emitJSONFieldRead(g *protogen.GeneratedFile, f *protogen.Field, name string
case protoreflect.StringKind:
template = "%s = in.String()"
case protoreflect.BytesKind:
template = "%s = in.Bytes()"
// Since some time ago proto3 support optional keyword, thus the presence is not tracked by default:
// https://github.com/protocolbuffers/protobuf-go/blob/fb995f184a1719ec42b247a3771d1036d92adf67/internal/impl/message_reflect_field.go#L327
// We do not explicitly support `optional` keyword, protoc will fail on such fileds.
// Thus, treat empty string as `[]byte(nil)`.
template = `{
tmp := in.Bytes()
if len(tmp) == 0 {
tmp = nil
}
%s = tmp
}`
case protoreflect.MessageKind:
if f.Desc.IsList() {
g.P("f = ", fieldType(g, f)[2:], "{}")
@ -147,8 +176,11 @@ func emitJSONMarshal(g *protogen.GeneratedFile, msg *protogen.Message) {
g.P("func (x *", msg.GoIdent.GoName, ") MarshalEasyJSON(out *", jwriterPackage.Ident("Writer"), ") {")
g.P(`if x == nil { out.RawString("null"); return }`)
if len(msg.Fields) != 0 {
g.P("first := true")
}
g.P("out.RawByte('{')")
for i, f := range msg.Fields {
for _, f := range msg.Fields {
if f.Oneof != nil {
if f.Oneof.Fields[0] != f {
continue
@ -157,29 +189,38 @@ func emitJSONMarshal(g *protogen.GeneratedFile, msg *protogen.Message) {
g.P("switch xx := x.", f.Oneof.GoName, ".(type) {")
for _, ff := range f.Oneof.Fields {
g.P("case *", ff.GoIdent, ":")
emitJSONFieldWrite(g, ff, "xx", i == 0)
emitJSONFieldWrite(g, ff, "xx")
}
g.P("}")
continue
}
emitJSONFieldWrite(g, f, "x", i == 0)
emitJSONFieldWrite(g, f, "x")
}
g.P("out.RawByte('}')")
g.P("}")
}
func emitJSONFieldWrite(g *protogen.GeneratedFile, f *protogen.Field, name string, first bool) {
func emitJSONFieldWrite(g *protogen.GeneratedFile, f *protogen.Field, name string) {
g.P("{")
defer g.P("}")
g.P("const prefix string = ", `",\"`, fieldJSONName(f), `\":"`)
if first {
g.P("out.RawString(prefix[1:])")
} else {
g.P("out.RawString(prefix)")
}
selector := name + "." + f.GoName
// This code is responsible for ignoring default values.
// We will restore it after having parametrized JSON marshaling.
//
// isNotDefault := notNil
// if f.Desc.IsList() {
// isNotDefault = notEmpty
// } else if f.Desc.Kind() != protoreflect.MessageKind {
// _, isNotDefault = easyprotoKindInfo(f.Desc.Kind())
// }
// g.P("if ", isNotDefault(selector), "{")
// defer g.P("}")
g.P("if !first { out.RawByte(','); } else { first = false; }")
g.P("const prefix string = ", `"\"`, fieldJSONName(f), `\":"`)
g.P("out.RawString(prefix)")
if f.Desc.IsList() {
selector += "[i]"
g.P("out.RawByte('[')")
@ -195,15 +236,27 @@ func emitJSONFieldWrite(g *protogen.GeneratedFile, f *protogen.Field, name strin
case protoreflect.BoolKind:
template = "out.Bool(%s)"
case protoreflect.EnumKind:
template = "out.Int32(int32(%s))"
enumType := fieldType(g, f).String()
template = `v := int32(%s)
if vv, ok := ` + enumType + `_name[v]; ok {
out.String(vv)
} else {
out.Int32(v)
}`
case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
template = "out.Int32(%s)"
case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
template = "out.Uint32(%s)"
case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
template = "out.Int64(%s)"
g.P("out.RawByte('\"')")
g.P("out.Buffer.Buf = ", strconvPackage.Ident("AppendInt"), "(out.Buffer.Buf, ", selector, ", 10)")
g.P("out.RawByte('\"')")
return
case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
template = "out.Uint64(%s)"
g.P("out.RawByte('\"')")
g.P("out.Buffer.Buf = ", strconvPackage.Ident("AppendUint"), "(out.Buffer.Buf, ", selector, ", 10)")
g.P("out.RawByte('\"')")
return
case protoreflect.FloatKind:
template = "out.Float32(%s)"
case protoreflect.DoubleKind:
@ -211,7 +264,10 @@ func emitJSONFieldWrite(g *protogen.GeneratedFile, f *protogen.Field, name strin
case protoreflect.StringKind:
template = "out.String(%s)"
case protoreflect.BytesKind:
template = "out.Base64Bytes(%s)"
g.P("if ", selector, "!= nil {")
g.P("out.Base64Bytes(", selector, ")")
g.P("} else { out.String(\"\") }")
return
case protoreflect.MessageKind:
template = "%s.MarshalEasyJSON(out)"
case protoreflect.GroupKind: