diff --git a/Makefile b/Makefile index cf36c6fc..9f7a8e33 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,7 @@ tidy: gen: $(GO_BIN) run ./gen/gen.go + $(GO_BIN) run ./batch/gen/gen.go $(GO_BIN) run ./builtin/v8/gen/gen.go $(GO_BIN) run ./builtin/v9/gen/gen.go $(GO_BIN) run ./builtin/v10/gen/gen.go diff --git a/batch/batch_return.go b/batch/batch_return.go new file mode 100644 index 00000000..5d570434 --- /dev/null +++ b/batch/batch_return.go @@ -0,0 +1,48 @@ +package batch + +import "github.com/filecoin-project/go-state-types/exitcode" + +type BatchReturn struct { + SuccessCount uint64 + FailCodes []FailCode +} + +type FailCode struct { + Idx uint64 + Code exitcode.ExitCode +} + +func (b BatchReturn) Size() int { + return int(b.SuccessCount) + len(b.FailCodes) +} + +func (b BatchReturn) AllOk() bool { + return len(b.FailCodes) == 0 +} + +func (b BatchReturn) Codes() []exitcode.ExitCode { + codes := make([]exitcode.ExitCode, b.Size()) + i := 0 + for _, fc := range b.FailCodes { + if fc.Idx > uint64(i) { + for ; i < int(fc.Idx); i++ { + codes[i] = exitcode.Ok + } + } + codes[i] = fc.Code + i++ + } + for ; i < len(codes); i++ { + codes[i] = exitcode.Ok + } + return codes +} + +func (b BatchReturn) CodeAt(n uint64) exitcode.ExitCode { + for _, fc := range b.FailCodes { + if fc.Idx == n { + return fc.Code + } + } + return exitcode.Ok +} diff --git a/batch/batch_return_test.go b/batch/batch_return_test.go new file mode 100644 index 00000000..1f721eb8 --- /dev/null +++ b/batch/batch_return_test.go @@ -0,0 +1,105 @@ +package batch + +import ( + "bytes" + "encoding/hex" + "testing" + + "github.com/filecoin-project/go-state-types/exitcode" + "github.com/stretchr/testify/require" +) + +// Tests to match with Rust fil_actors_runtime::serialization +func TestSerializationBatchReturn(t *testing.T) { + testCases := []struct { + params BatchReturn + hex string + }{ + { + params: BatchReturn{}, + // [0,[]] + hex: "820080", + }, + { + params: BatchReturn{SuccessCount: 1}, + // [1,[]] + hex: "820180", + }, + { + params: BatchReturn{FailCodes: []FailCode{{Idx: 0, Code: exitcode.ErrIllegalArgument}}}, + // [0,[[0,16]]] + hex: "820081820010", + }, + { + params: BatchReturn{SuccessCount: 2, FailCodes: []FailCode{ + {Idx: 1, Code: exitcode.SysErrOutOfGas}, + {Idx: 2, Code: exitcode.ErrIllegalState}, + {Idx: 4, Code: exitcode.ErrIllegalArgument}, + }}, + // [2,[[1,7],[2,20],[4,16]]] + hex: "820283820107820214820410", + }, + } + + for _, tc := range testCases { + t.Run("", func(t *testing.T) { + req := require.New(t) + + var buf bytes.Buffer + req.NoError(tc.params.MarshalCBOR(&buf)) + req.Equal(tc.hex, hex.EncodeToString(buf.Bytes())) + var rt BatchReturn + req.NoError(rt.UnmarshalCBOR(&buf)) + req.Equal(tc.params, rt) + }) + } +} + +func TestBatchReturn(t *testing.T) { + req := require.New(t) + + br := BatchReturn{} + req.Equal(0, br.Size()) + req.True(br.AllOk()) + req.Equal([]exitcode.ExitCode{}, br.Codes()) + + br = BatchReturn{SuccessCount: 1} + req.Equal(1, br.Size()) + req.True(br.AllOk()) + req.Equal([]exitcode.ExitCode{exitcode.Ok}, br.Codes()) + req.Equal(exitcode.Ok, br.CodeAt(0)) + + br = BatchReturn{FailCodes: []FailCode{{Idx: 0, Code: exitcode.ErrIllegalArgument}}} + req.Equal(1, br.Size()) + req.False(br.AllOk()) + req.Equal([]exitcode.ExitCode{exitcode.ErrIllegalArgument}, br.Codes()) + req.Equal(exitcode.ErrIllegalArgument, br.CodeAt(0)) + + br = BatchReturn{SuccessCount: 1, FailCodes: []FailCode{{Idx: 1, Code: exitcode.ErrIllegalArgument}}} + req.Equal(2, br.Size()) + req.False(br.AllOk()) + req.Equal([]exitcode.ExitCode{exitcode.Ok, exitcode.ErrIllegalArgument}, br.Codes()) + req.Equal(exitcode.Ok, br.CodeAt(0)) + req.Equal(exitcode.ErrIllegalArgument, br.CodeAt(1)) + + br = BatchReturn{SuccessCount: 1, FailCodes: []FailCode{{Idx: 0, Code: exitcode.ErrForbidden}}} + req.Equal(2, br.Size()) + req.False(br.AllOk()) + req.Equal([]exitcode.ExitCode{exitcode.ErrForbidden, exitcode.Ok}, br.Codes()) + req.Equal(exitcode.ErrForbidden, br.CodeAt(0)) + req.Equal(exitcode.Ok, br.CodeAt(1)) + + br = BatchReturn{SuccessCount: 2, FailCodes: []FailCode{ + {Idx: 1, Code: exitcode.SysErrOutOfGas}, + {Idx: 2, Code: exitcode.ErrIllegalState}, + {Idx: 4, Code: exitcode.ErrIllegalArgument}, + }} + req.Equal(5, br.Size()) + req.False(br.AllOk()) + req.Equal([]exitcode.ExitCode{exitcode.Ok, exitcode.SysErrOutOfGas, exitcode.ErrIllegalState, exitcode.Ok, exitcode.ErrIllegalArgument}, br.Codes()) + req.Equal(exitcode.Ok, br.CodeAt(0)) + req.Equal(exitcode.SysErrOutOfGas, br.CodeAt(1)) + req.Equal(exitcode.ErrIllegalState, br.CodeAt(2)) + req.Equal(exitcode.Ok, br.CodeAt(3)) + req.Equal(exitcode.ErrIllegalArgument, br.CodeAt(4)) +} diff --git a/batch/cbor_gen.go b/batch/cbor_gen.go new file mode 100644 index 00000000..6898f229 --- /dev/null +++ b/batch/cbor_gen.go @@ -0,0 +1,234 @@ +// Code generated by github.com/whyrusleeping/cbor-gen. DO NOT EDIT. + +package batch + +import ( + "fmt" + "io" + "math" + "sort" + + exitcode "github.com/filecoin-project/go-state-types/exitcode" + cid "github.com/ipfs/go-cid" + cbg "github.com/whyrusleeping/cbor-gen" + xerrors "golang.org/x/xerrors" +) + +var _ = xerrors.Errorf +var _ = cid.Undef +var _ = math.E +var _ = sort.Sort + +var lengthBufBatchReturn = []byte{130} + +func (t *BatchReturn) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write(lengthBufBatchReturn); err != nil { + return err + } + + // t.SuccessCount (uint64) (uint64) + + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { + return err + } + + // t.FailCodes ([]batch.FailCode) (slice) + if len(t.FailCodes) > 8192 { + return xerrors.Errorf("Slice value in field t.FailCodes was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { + return err + } + for _, v := range t.FailCodes { + if err := v.MarshalCBOR(cw); err != nil { + return err + } + + } + return nil +} + +func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { + *t = BatchReturn{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajArray { + return fmt.Errorf("cbor input should be of type array") + } + + if extra != 2 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.SuccessCount (uint64) (uint64) + + { + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.SuccessCount = uint64(extra) + + } + // t.FailCodes ([]batch.FailCode) (slice) + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + + if extra > 8192 { + return fmt.Errorf("t.FailCodes: array too large (%d)", extra) + } + + if maj != cbg.MajArray { + return fmt.Errorf("expected cbor array") + } + + if extra > 0 { + t.FailCodes = make([]FailCode, extra) + } + + for i := 0; i < int(extra); i++ { + { + var maj byte + var extra uint64 + var err error + _ = maj + _ = extra + _ = err + + { + + if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { + return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) + } + + } + + } + } + return nil +} + +var lengthBufFailCode = []byte{130} + +func (t *FailCode) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write(lengthBufFailCode); err != nil { + return err + } + + // t.Idx (uint64) (uint64) + + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { + return err + } + + // t.Code (exitcode.ExitCode) (int64) + if t.Code >= 0 { + if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { + return err + } + } else { + if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { + return err + } + } + + return nil +} + +func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { + *t = FailCode{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajArray { + return fmt.Errorf("cbor input should be of type array") + } + + if extra != 2 { + return fmt.Errorf("cbor input had wrong number of fields") + } + + // t.Idx (uint64) (uint64) + + { + + maj, extra, err = cr.ReadHeader() + if err != nil { + return err + } + if maj != cbg.MajUnsignedInt { + return fmt.Errorf("wrong type for uint64 field") + } + t.Idx = uint64(extra) + + } + // t.Code (exitcode.ExitCode) (int64) + { + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + var extraI int64 + switch maj { + case cbg.MajUnsignedInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 positive overflow") + } + case cbg.MajNegativeInt: + extraI = int64(extra) + if extraI < 0 { + return fmt.Errorf("int64 negative overflow") + } + extraI = -1 - extraI + default: + return fmt.Errorf("wrong type for int64 field: %d", maj) + } + + t.Code = exitcode.ExitCode(extraI) + } + return nil +} diff --git a/batch/gen/gen.go b/batch/gen/gen.go new file mode 100644 index 00000000..8a2ce8c6 --- /dev/null +++ b/batch/gen/gen.go @@ -0,0 +1,17 @@ +package main + +import ( + "github.com/filecoin-project/go-state-types/batch" + gen "github.com/whyrusleeping/cbor-gen" +) + +func main() { + // Actor manifest + if err := gen.WriteTupleEncodersToFile("./batch/cbor_gen.go", "batch", + // actor manifest + batch.BatchReturn{}, + batch.FailCode{}, + ); err != nil { + panic(err) + } +} diff --git a/builtin/v10/gen/gen.go b/builtin/v10/gen/gen.go index 3109d2c9..ef0d4b6c 100644 --- a/builtin/v10/gen/gen.go +++ b/builtin/v10/gen/gen.go @@ -220,7 +220,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -235,7 +234,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaim{}, verifreg.Claim{}, verifreg.ClaimTerm{}, diff --git a/builtin/v10/verifreg/cbor_gen.go b/builtin/v10/verifreg/cbor_gen.go index ba9c64aa..fef97080 100644 --- a/builtin/v10/verifreg/cbor_gen.go +++ b/builtin/v10/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaim = []byte{134} func (t *SectorAllocationClaim) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v10/verifreg/verifreg_types.go b/builtin/v10/verifreg/verifreg_types.go index 7ca9d59f..30b63490 100644 --- a/builtin/v10/verifreg/verifreg_types.go +++ b/builtin/v10/verifreg/verifreg_types.go @@ -3,9 +3,9 @@ package verifreg import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" "github.com/ipfs/go-cid" "github.com/multiformats/go-varint" ) @@ -71,20 +71,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -112,7 +102,7 @@ type SectorAllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -122,7 +112,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -172,8 +162,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -187,7 +177,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -196,7 +186,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct { diff --git a/builtin/v11/gen/gen.go b/builtin/v11/gen/gen.go index 824c34ab..44e315d8 100644 --- a/builtin/v11/gen/gen.go +++ b/builtin/v11/gen/gen.go @@ -221,7 +221,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -236,7 +235,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaim{}, verifreg.Claim{}, verifreg.ClaimTerm{}, diff --git a/builtin/v11/verifreg/cbor_gen.go b/builtin/v11/verifreg/cbor_gen.go index ba9c64aa..fef97080 100644 --- a/builtin/v11/verifreg/cbor_gen.go +++ b/builtin/v11/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaim = []byte{134} func (t *SectorAllocationClaim) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v11/verifreg/verifreg_types.go b/builtin/v11/verifreg/verifreg_types.go index 7ca9d59f..30b63490 100644 --- a/builtin/v11/verifreg/verifreg_types.go +++ b/builtin/v11/verifreg/verifreg_types.go @@ -3,9 +3,9 @@ package verifreg import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" "github.com/ipfs/go-cid" "github.com/multiformats/go-varint" ) @@ -71,20 +71,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -112,7 +102,7 @@ type SectorAllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -122,7 +112,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -172,8 +162,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -187,7 +177,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -196,7 +186,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct { diff --git a/builtin/v12/gen/gen.go b/builtin/v12/gen/gen.go index db6c7a14..2317583d 100644 --- a/builtin/v12/gen/gen.go +++ b/builtin/v12/gen/gen.go @@ -219,7 +219,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -234,7 +233,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaims{}, verifreg.AllocationClaim{}, verifreg.Claim{}, diff --git a/builtin/v12/verifreg/cbor_gen.go b/builtin/v12/verifreg/cbor_gen.go index 7b93f3c0..94700784 100644 --- a/builtin/v12/verifreg/cbor_gen.go +++ b/builtin/v12/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaims = []byte{131} func (t *SectorAllocationClaims) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v12/verifreg/verifreg_types.go b/builtin/v12/verifreg/verifreg_types.go index dc23a7c2..d711ca76 100644 --- a/builtin/v12/verifreg/verifreg_types.go +++ b/builtin/v12/verifreg/verifreg_types.go @@ -6,9 +6,9 @@ import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" ) // RemoveDataCapProposal A verifier who wants to send/agree to a RemoveDataCapRequest should sign a RemoveDataCapProposal and send the signed proposal to the root key holder. @@ -72,20 +72,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -117,7 +107,7 @@ type AllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -127,7 +117,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -177,8 +167,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -192,7 +182,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -201,7 +191,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct { diff --git a/builtin/v13/gen/gen.go b/builtin/v13/gen/gen.go index 04640f7f..9cc1e038 100644 --- a/builtin/v13/gen/gen.go +++ b/builtin/v13/gen/gen.go @@ -137,8 +137,6 @@ func main() { market.SectorDataSpec{}, market.VerifiedDealInfo{}, market.DealSettlementSummary{}, - market.BatchReturn{}, - market.FailCode{}, ); err != nil { panic(err) } @@ -202,8 +200,6 @@ func main() { miner.PieceActivationManifest{}, miner.VerifiedAllocationKey{}, miner.DataActivationNotification{}, - miner.BatchReturn{}, - miner.FailCode{}, miner.ProveReplicaUpdates3Params{}, miner.SectorUpdateManifest{}, miner.SectorChanges{}, @@ -235,7 +231,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -250,7 +245,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaims{}, verifreg.AllocationClaim{}, verifreg.Claim{}, diff --git a/builtin/v13/market/cbor_gen.go b/builtin/v13/market/cbor_gen.go index 2c8c271f..2e226d55 100644 --- a/builtin/v13/market/cbor_gen.go +++ b/builtin/v13/market/cbor_gen.go @@ -10,7 +10,6 @@ import ( abi "github.com/filecoin-project/go-state-types/abi" verifreg "github.com/filecoin-project/go-state-types/builtin/v13/verifreg" - exitcode "github.com/filecoin-project/go-state-types/exitcode" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -1821,7 +1820,7 @@ func (t *SettleDealPaymentsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.Results (market.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -1866,7 +1865,7 @@ func (t *SettleDealPaymentsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.Results (market.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2823,217 +2822,3 @@ func (t *DealSettlementSummary) UnmarshalCBOR(r io.Reader) (err error) { } return nil } - -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCount ([]market.FailCode) (slice) - if len(t.FailCount) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCount was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCount))); err != nil { - return err - } - for _, v := range t.FailCount { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCount ([]market.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCount: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCount = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCount[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCount[i]: %w", err) - } - - } - - } - } - return nil -} - -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Index (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Index)); err != nil { - return err - } - - // t.ExitCode (exitcode.ExitCode) (int64) - if t.ExitCode >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ExitCode)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.ExitCode-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Index (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Index = uint64(extra) - - } - // t.ExitCode (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.ExitCode = exitcode.ExitCode(extraI) - } - return nil -} diff --git a/builtin/v13/market/market_types.go b/builtin/v13/market/market_types.go index 8bb42020..9784f538 100644 --- a/builtin/v13/market/market_types.go +++ b/builtin/v13/market/market_types.go @@ -1,13 +1,13 @@ package market import ( - "github.com/filecoin-project/go-state-types/exitcode" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/builtin/v13/verifreg" ) @@ -142,16 +142,6 @@ type GetDealSectorReturn = abi.SectorNumber type SettleDealPaymentsParams = bitfield.BitField -type FailCode struct { - Index uint64 - ExitCode exitcode.ExitCode -} - -type BatchReturn struct { - SuccessCount uint64 - FailCount []FailCode -} - type DealSettlementSummary struct { // Incremental amount paid to the provider. Payment abi.TokenAmount @@ -161,7 +151,7 @@ type DealSettlementSummary struct { type SettleDealPaymentsReturn struct { // Indicators of success or failure for each deal. - Results BatchReturn + Results batch.BatchReturn // Results for those deals that successfully settled. Settlements []DealSettlementSummary } diff --git a/builtin/v13/miner/cbor_gen.go b/builtin/v13/miner/cbor_gen.go index eb249a78..e4829b59 100644 --- a/builtin/v13/miner/cbor_gen.go +++ b/builtin/v13/miner/cbor_gen.go @@ -11,7 +11,6 @@ import ( address "github.com/filecoin-project/go-address" abi "github.com/filecoin-project/go-state-types/abi" verifreg "github.com/filecoin-project/go-state-types/builtin/v13/verifreg" - exitcode "github.com/filecoin-project/go-state-types/exitcode" proof "github.com/filecoin-project/go-state-types/proof" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" @@ -7179,220 +7178,6 @@ func (t *DataActivationNotification) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]miner.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]miner.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufProveReplicaUpdates3Params = []byte{135} func (t *ProveReplicaUpdates3Params) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v13/miner/miner_types.go b/builtin/v13/miner/miner_types.go index fabc5105..3d4f2128 100644 --- a/builtin/v13/miner/miner_types.go +++ b/builtin/v13/miner/miner_types.go @@ -8,6 +8,7 @@ import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/builtin/v13/power" "github.com/filecoin-project/go-state-types/builtin/v13/util/adt" @@ -435,18 +436,7 @@ type DataActivationNotification struct { } // ProveCommitSectors3Return represents the return value for the ProveCommit2 function. -type ProveCommitSectors3Return = BatchReturn - -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - // Idx represents the index of the operation that failed within the batch. - Idx uint64 - Code xc.ExitCode // todo correct? -} +type ProveCommitSectors3Return = batch.BatchReturn // ProveReplicaUpdates3Params represents the parameters for proving replica updates. type ProveReplicaUpdates3Params struct { @@ -469,7 +459,7 @@ type SectorUpdateManifest struct { } // ProveReplicaUpdates3Return represents the return value for the ProveReplicaUpdates3 function. -type ProveReplicaUpdates3Return = BatchReturn +type ProveReplicaUpdates3Return = batch.BatchReturn // SectorContentChangedParams represents a notification of change committed to sectors. type SectorContentChangedParams = []SectorChanges diff --git a/builtin/v13/verifreg/cbor_gen.go b/builtin/v13/verifreg/cbor_gen.go index 7b93f3c0..94700784 100644 --- a/builtin/v13/verifreg/cbor_gen.go +++ b/builtin/v13/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaims = []byte{131} func (t *SectorAllocationClaims) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v13/verifreg/verifreg_types.go b/builtin/v13/verifreg/verifreg_types.go index dc23a7c2..d711ca76 100644 --- a/builtin/v13/verifreg/verifreg_types.go +++ b/builtin/v13/verifreg/verifreg_types.go @@ -6,9 +6,9 @@ import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" ) // RemoveDataCapProposal A verifier who wants to send/agree to a RemoveDataCapRequest should sign a RemoveDataCapProposal and send the signed proposal to the root key holder. @@ -72,20 +72,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -117,7 +107,7 @@ type AllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -127,7 +117,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -177,8 +167,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -192,7 +182,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -201,7 +191,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct { diff --git a/builtin/v14/gen/gen.go b/builtin/v14/gen/gen.go index 84dfeb41..4c924954 100644 --- a/builtin/v14/gen/gen.go +++ b/builtin/v14/gen/gen.go @@ -137,8 +137,6 @@ func main() { market.SectorDataSpec{}, market.VerifiedDealInfo{}, market.DealSettlementSummary{}, - market.BatchReturn{}, - market.FailCode{}, ); err != nil { panic(err) } @@ -202,8 +200,6 @@ func main() { miner.PieceActivationManifest{}, miner.VerifiedAllocationKey{}, miner.DataActivationNotification{}, - miner.BatchReturn{}, - miner.FailCode{}, miner.ProveReplicaUpdates3Params{}, miner.SectorUpdateManifest{}, miner.SectorChanges{}, @@ -237,7 +233,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -252,7 +247,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaims{}, verifreg.AllocationClaim{}, verifreg.Claim{}, diff --git a/builtin/v14/market/cbor_gen.go b/builtin/v14/market/cbor_gen.go index 8c793121..98aa9a3b 100644 --- a/builtin/v14/market/cbor_gen.go +++ b/builtin/v14/market/cbor_gen.go @@ -10,7 +10,6 @@ import ( abi "github.com/filecoin-project/go-state-types/abi" verifreg "github.com/filecoin-project/go-state-types/builtin/v14/verifreg" - exitcode "github.com/filecoin-project/go-state-types/exitcode" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -1821,7 +1820,7 @@ func (t *SettleDealPaymentsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.Results (market.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -1866,7 +1865,7 @@ func (t *SettleDealPaymentsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.Results (market.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2823,217 +2822,3 @@ func (t *DealSettlementSummary) UnmarshalCBOR(r io.Reader) (err error) { } return nil } - -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCount ([]market.FailCode) (slice) - if len(t.FailCount) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCount was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCount))); err != nil { - return err - } - for _, v := range t.FailCount { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCount ([]market.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCount: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCount = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCount[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCount[i]: %w", err) - } - - } - - } - } - return nil -} - -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Index (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Index)); err != nil { - return err - } - - // t.ExitCode (exitcode.ExitCode) (int64) - if t.ExitCode >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.ExitCode)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.ExitCode-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Index (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Index = uint64(extra) - - } - // t.ExitCode (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.ExitCode = exitcode.ExitCode(extraI) - } - return nil -} diff --git a/builtin/v14/market/market_types.go b/builtin/v14/market/market_types.go index 20167d6b..882cafb6 100644 --- a/builtin/v14/market/market_types.go +++ b/builtin/v14/market/market_types.go @@ -1,13 +1,13 @@ package market import ( - "github.com/filecoin-project/go-state-types/exitcode" "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/builtin/v14/verifreg" ) @@ -142,16 +142,6 @@ type GetDealSectorReturn = abi.SectorNumber type SettleDealPaymentsParams = bitfield.BitField -type FailCode struct { - Index uint64 - ExitCode exitcode.ExitCode -} - -type BatchReturn struct { - SuccessCount uint64 - FailCount []FailCode -} - type DealSettlementSummary struct { // Incremental amount paid to the provider. Payment abi.TokenAmount @@ -161,7 +151,7 @@ type DealSettlementSummary struct { type SettleDealPaymentsReturn struct { // Indicators of success or failure for each deal. - Results BatchReturn + Results batch.BatchReturn // Results for those deals that successfully settled. Settlements []DealSettlementSummary } diff --git a/builtin/v14/miner/cbor_gen.go b/builtin/v14/miner/cbor_gen.go index 8a478e7a..c9d38608 100644 --- a/builtin/v14/miner/cbor_gen.go +++ b/builtin/v14/miner/cbor_gen.go @@ -11,7 +11,6 @@ import ( address "github.com/filecoin-project/go-address" abi "github.com/filecoin-project/go-state-types/abi" verifreg "github.com/filecoin-project/go-state-types/builtin/v14/verifreg" - exitcode "github.com/filecoin-project/go-state-types/exitcode" proof "github.com/filecoin-project/go-state-types/proof" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" @@ -7179,220 +7178,6 @@ func (t *DataActivationNotification) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]miner.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]miner.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufProveReplicaUpdates3Params = []byte{135} func (t *ProveReplicaUpdates3Params) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v14/miner/miner_types.go b/builtin/v14/miner/miner_types.go index 6b913bf9..3a5a5ba6 100644 --- a/builtin/v14/miner/miner_types.go +++ b/builtin/v14/miner/miner_types.go @@ -8,6 +8,7 @@ import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-bitfield" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/builtin" "github.com/filecoin-project/go-state-types/builtin/v14/power" "github.com/filecoin-project/go-state-types/builtin/v14/util/adt" @@ -435,18 +436,7 @@ type DataActivationNotification struct { } // ProveCommitSectors3Return represents the return value for the ProveCommit2 function. -type ProveCommitSectors3Return = BatchReturn - -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - // Idx represents the index of the operation that failed within the batch. - Idx uint64 - Code xc.ExitCode // todo correct? -} +type ProveCommitSectors3Return = batch.BatchReturn // ProveReplicaUpdates3Params represents the parameters for proving replica updates. type ProveReplicaUpdates3Params struct { @@ -469,7 +459,7 @@ type SectorUpdateManifest struct { } // ProveReplicaUpdates3Return represents the return value for the ProveReplicaUpdates3 function. -type ProveReplicaUpdates3Return = BatchReturn +type ProveReplicaUpdates3Return = batch.BatchReturn // SectorContentChangedParams represents a notification of change committed to sectors. type SectorContentChangedParams = []SectorChanges @@ -518,4 +508,4 @@ type ProveCommitSectorsNIParams struct { RequireActivationSuccess bool // Whether to abort if any sector activation fails } -type ProveCommitSectorsNIReturn = BatchReturn +type ProveCommitSectorsNIReturn = batch.BatchReturn diff --git a/builtin/v14/miner/miner_types_test.go b/builtin/v14/miner/miner_types_test.go index 4068ba27..1e49a6e1 100644 --- a/builtin/v14/miner/miner_types_test.go +++ b/builtin/v14/miner/miner_types_test.go @@ -10,9 +10,8 @@ import ( "github.com/stretchr/testify/require" ) -// Tests to match with Rust fil_actor_miner::serialization - -func TestSerializationSlaimAllocationsParams(t *testing.T) { +// Test to match with Rust fil_actor_miner::serialization +func TestSerializationProveCommitSectorsNIParams(t *testing.T) { testCases := []struct { params ProveCommitSectorsNIParams hex string diff --git a/builtin/v14/verifreg/cbor_gen.go b/builtin/v14/verifreg/cbor_gen.go index 7b93f3c0..94700784 100644 --- a/builtin/v14/verifreg/cbor_gen.go +++ b/builtin/v14/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaims = []byte{131} func (t *SectorAllocationClaims) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v14/verifreg/verifreg_types.go b/builtin/v14/verifreg/verifreg_types.go index dc23a7c2..d711ca76 100644 --- a/builtin/v14/verifreg/verifreg_types.go +++ b/builtin/v14/verifreg/verifreg_types.go @@ -6,9 +6,9 @@ import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" ) // RemoveDataCapProposal A verifier who wants to send/agree to a RemoveDataCapRequest should sign a RemoveDataCapProposal and send the signed proposal to the root key holder. @@ -72,20 +72,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -117,7 +107,7 @@ type AllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -127,7 +117,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -177,8 +167,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -192,7 +182,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -201,7 +191,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct { diff --git a/builtin/v9/gen/gen.go b/builtin/v9/gen/gen.go index 234bdf25..ff92e6f8 100644 --- a/builtin/v9/gen/gen.go +++ b/builtin/v9/gen/gen.go @@ -222,7 +222,6 @@ func main() { verifreg.RemoveDataCapReturn{}, verifreg.RemoveExpiredAllocationsParams{}, verifreg.RemoveExpiredAllocationsReturn{}, - verifreg.BatchReturn{}, verifreg.ClaimAllocationsParams{}, verifreg.ClaimAllocationsReturn{}, verifreg.GetClaimsParams{}, @@ -237,7 +236,6 @@ func main() { verifreg.RemoveDataCapRequest{}, verifreg.RemoveDataCapProposal{}, verifreg.RmDcProposalID{}, - verifreg.FailCode{}, verifreg.SectorAllocationClaim{}, verifreg.Claim{}, verifreg.ClaimTerm{}, diff --git a/builtin/v9/verifreg/cbor_gen.go b/builtin/v9/verifreg/cbor_gen.go index 777358be..05bd3a0c 100644 --- a/builtin/v9/verifreg/cbor_gen.go +++ b/builtin/v9/verifreg/cbor_gen.go @@ -9,7 +9,7 @@ import ( "sort" abi "github.com/filecoin-project/go-state-types/abi" - exitcode "github.com/filecoin-project/go-state-types/exitcode" + batch "github.com/filecoin-project/go-state-types/batch" cid "github.com/ipfs/go-cid" cbg "github.com/whyrusleeping/cbor-gen" xerrors "golang.org/x/xerrors" @@ -768,7 +768,7 @@ func (t *RemoveExpiredAllocationsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -846,7 +846,7 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -867,121 +867,6 @@ func (t *RemoveExpiredAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) return nil } -var lengthBufBatchReturn = []byte{130} - -func (t *BatchReturn) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufBatchReturn); err != nil { - return err - } - - // t.SuccessCount (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.SuccessCount)); err != nil { - return err - } - - // t.FailCodes ([]verifreg.FailCode) (slice) - if len(t.FailCodes) > 8192 { - return xerrors.Errorf("Slice value in field t.FailCodes was too long") - } - - if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.FailCodes))); err != nil { - return err - } - for _, v := range t.FailCodes { - if err := v.MarshalCBOR(cw); err != nil { - return err - } - - } - return nil -} - -func (t *BatchReturn) UnmarshalCBOR(r io.Reader) (err error) { - *t = BatchReturn{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.SuccessCount (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.SuccessCount = uint64(extra) - - } - // t.FailCodes ([]verifreg.FailCode) (slice) - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - - if extra > 8192 { - return fmt.Errorf("t.FailCodes: array too large (%d)", extra) - } - - if maj != cbg.MajArray { - return fmt.Errorf("expected cbor array") - } - - if extra > 0 { - t.FailCodes = make([]FailCode, extra) - } - - for i := 0; i < int(extra); i++ { - { - var maj byte - var extra uint64 - var err error - _ = maj - _ = extra - _ = err - - { - - if err := t.FailCodes[i].UnmarshalCBOR(cr); err != nil { - return xerrors.Errorf("unmarshaling t.FailCodes[i]: %w", err) - } - - } - - } - } - return nil -} - var lengthBufClaimAllocationsParams = []byte{130} func (t *ClaimAllocationsParams) MarshalCBOR(w io.Writer) error { @@ -1113,7 +998,7 @@ func (t *ClaimAllocationsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1148,7 +1033,7 @@ func (t *ClaimAllocationsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1304,7 +1189,7 @@ func (t *GetClaimsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) if err := t.BatchInfo.MarshalCBOR(cw); err != nil { return err } @@ -1349,7 +1234,7 @@ func (t *GetClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.BatchInfo (verifreg.BatchReturn) (struct) + // t.BatchInfo (batch.BatchReturn) (struct) { @@ -1511,12 +1396,12 @@ func (t *AllocationsResponse) MarshalCBOR(w io.Writer) error { return err } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) if err := t.AllocationResults.MarshalCBOR(cw); err != nil { return err } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) if err := t.ExtensionResults.MarshalCBOR(cw); err != nil { return err } @@ -1562,7 +1447,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { return fmt.Errorf("cbor input had wrong number of fields") } - // t.AllocationResults (verifreg.BatchReturn) (struct) + // t.AllocationResults (batch.BatchReturn) (struct) { @@ -1571,7 +1456,7 @@ func (t *AllocationsResponse) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.ExtensionResults (verifreg.BatchReturn) (struct) + // t.ExtensionResults (batch.BatchReturn) (struct) { @@ -1741,7 +1626,7 @@ func (t *ExtendClaimTermsReturn) MarshalCBOR(w io.Writer) error { return err } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) if len(t.FailCodes) > 8192 { return xerrors.Errorf("Slice value in field t.FailCodes was too long") } @@ -1795,7 +1680,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { t.SuccessCount = uint64(extra) } - // t.FailCodes ([]verifreg.FailCode) (slice) + // t.FailCodes ([]batch.FailCode) (slice) maj, extra, err = cr.ReadHeader() if err != nil { @@ -1811,7 +1696,7 @@ func (t *ExtendClaimTermsReturn) UnmarshalCBOR(r io.Reader) (err error) { } if extra > 0 { - t.FailCodes = make([]FailCode, extra) + t.FailCodes = make([]batch.FailCode, extra) } for i := 0; i < int(extra); i++ { @@ -1987,7 +1872,7 @@ func (t *RemoveExpiredClaimsReturn) MarshalCBOR(w io.Writer) error { } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) if err := t.Results.MarshalCBOR(cw); err != nil { return err } @@ -2060,7 +1945,7 @@ func (t *RemoveExpiredClaimsReturn) UnmarshalCBOR(r io.Reader) (err error) { } } - // t.Results (verifreg.BatchReturn) (struct) + // t.Results (batch.BatchReturn) (struct) { @@ -2289,105 +2174,6 @@ func (t *RmDcProposalID) UnmarshalCBOR(r io.Reader) (err error) { return nil } -var lengthBufFailCode = []byte{130} - -func (t *FailCode) MarshalCBOR(w io.Writer) error { - if t == nil { - _, err := w.Write(cbg.CborNull) - return err - } - - cw := cbg.NewCborWriter(w) - - if _, err := cw.Write(lengthBufFailCode); err != nil { - return err - } - - // t.Idx (uint64) (uint64) - - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Idx)); err != nil { - return err - } - - // t.Code (exitcode.ExitCode) (int64) - if t.Code >= 0 { - if err := cw.WriteMajorTypeHeader(cbg.MajUnsignedInt, uint64(t.Code)); err != nil { - return err - } - } else { - if err := cw.WriteMajorTypeHeader(cbg.MajNegativeInt, uint64(-t.Code-1)); err != nil { - return err - } - } - - return nil -} - -func (t *FailCode) UnmarshalCBOR(r io.Reader) (err error) { - *t = FailCode{} - - cr := cbg.NewCborReader(r) - - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - defer func() { - if err == io.EOF { - err = io.ErrUnexpectedEOF - } - }() - - if maj != cbg.MajArray { - return fmt.Errorf("cbor input should be of type array") - } - - if extra != 2 { - return fmt.Errorf("cbor input had wrong number of fields") - } - - // t.Idx (uint64) (uint64) - - { - - maj, extra, err = cr.ReadHeader() - if err != nil { - return err - } - if maj != cbg.MajUnsignedInt { - return fmt.Errorf("wrong type for uint64 field") - } - t.Idx = uint64(extra) - - } - // t.Code (exitcode.ExitCode) (int64) - { - maj, extra, err := cr.ReadHeader() - if err != nil { - return err - } - var extraI int64 - switch maj { - case cbg.MajUnsignedInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 positive overflow") - } - case cbg.MajNegativeInt: - extraI = int64(extra) - if extraI < 0 { - return fmt.Errorf("int64 negative overflow") - } - extraI = -1 - extraI - default: - return fmt.Errorf("wrong type for int64 field: %d", maj) - } - - t.Code = exitcode.ExitCode(extraI) - } - return nil -} - var lengthBufSectorAllocationClaim = []byte{134} func (t *SectorAllocationClaim) MarshalCBOR(w io.Writer) error { diff --git a/builtin/v9/verifreg/verifreg_types.go b/builtin/v9/verifreg/verifreg_types.go index bc361d62..e3621bbb 100644 --- a/builtin/v9/verifreg/verifreg_types.go +++ b/builtin/v9/verifreg/verifreg_types.go @@ -3,9 +3,9 @@ package verifreg import ( addr "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/go-state-types/batch" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" - "github.com/filecoin-project/go-state-types/exitcode" "github.com/ipfs/go-cid" "github.com/multiformats/go-varint" ) @@ -71,20 +71,10 @@ type RemoveExpiredAllocationsParams struct { type RemoveExpiredAllocationsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn DataCapRecovered DataCap } -type BatchReturn struct { - SuccessCount uint64 - FailCodes []FailCode -} - -type FailCode struct { - Idx uint64 - Code exitcode.ExitCode -} - type AllocationId uint64 func (a AllocationId) Key() string { @@ -112,7 +102,7 @@ type SectorAllocationClaim struct { } type ClaimAllocationsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn ClaimedSpace big.Int } @@ -122,7 +112,7 @@ type GetClaimsParams struct { } type GetClaimsReturn struct { - BatchInfo BatchReturn + BatchInfo batch.BatchReturn Claims []Claim } @@ -172,8 +162,8 @@ type UniversalReceiverParams struct { type ReceiverType uint64 type AllocationsResponse struct { - AllocationResults BatchReturn - ExtensionResults BatchReturn + AllocationResults batch.BatchReturn + ExtensionResults batch.BatchReturn NewAllocations []AllocationId } @@ -187,7 +177,7 @@ type ClaimTerm struct { TermMax abi.ChainEpoch } -type ExtendClaimTermsReturn BatchReturn +type ExtendClaimTermsReturn batch.BatchReturn type RemoveExpiredClaimsParams struct { Provider abi.ActorID @@ -196,7 +186,7 @@ type RemoveExpiredClaimsParams struct { type RemoveExpiredClaimsReturn struct { Considered []AllocationId - Results BatchReturn + Results batch.BatchReturn } type AllocationRequest struct {