9e03fcab83
* Initial work supporting DDO pieces in lotus-miner * sealing: Update pipeline input to operate on UniversalPiece * sealing: Update pipeline checks/sealing states to operate on UniversalPiece * sealing: Make pipeline build with UniversalPiece * move PieceDealInfo out of api * make gen * make sealing pipeline unit tests pass * fix itest ensemble build * don't panic in SectorsStatus with deals * stop linter from complaining about checkPieces * fix sector import tests * mod tidy * sealing: Add logic for (pre)committing DDO sectors * sealing: state-types with method defs * DDO non-snap pipeline works(?), DDO Itests * DDO support in snapdeals pipeline * make gen * update actor bundles * update the gst market fix * fix: chain: use PreCommitSectorsBatch2 when setting up genesis * some bug fixes * integration working changes * update actor bundles * Make TestOnboardRawPieceSnap pass * Appease the linter * Make deadlines test pass with v12 actors * Update go-state-types, abstract market DealState * make gen * mod tidy, lint fixes * Fix some more tests * Bump version in master Bump version in master * Make gen Make gen * fix sender * fix: lotus-provider: Fix winning PoSt * fix: sql Scan cannot write to an object * Actually show miner-addrs in info-log Actually show miner-addrs in lotus-provider info-log * [WIP] feat: Add nv22 skeleton Addition of Network Version 22 skeleton * update FFI * ddo is now nv22 * make gen * temp actor bundle with ddo * use working go-state-types * gst with v13 market migration * update bundle, builtin.MethodsMiner.ProveCommitSectors2 -> 3 * actually working v13 migration, v13 migration itest * Address review * sealing: Correct DDO snap pledge math * itests: Mixed ddo itest * pipeline: Fix sectorWeight * sealing: convert market deals into PAMs in mixed sectors * sealing: make market to ddo conversion work * fix lint * update gst * Update actors and GST to lastest integ branch * commit batcher: Update ProveCommitSectors3Params builder logic * make gen * use builtin-actors master * ddo: address review * itests: Add commd assertions to ddo tests * make gen * gst with fixed types * config knobs for RequireActivationSuccess * storage: Drop obsolete flaky tasts --------- Co-authored-by: Jennifer Wang <jiayingw703@gmail.com> Co-authored-by: Aayush <arajasek94@gmail.com> Co-authored-by: Shrenuj Bansal <shrenuj.bansal@protocol.ai> Co-authored-by: Phi <orjan.roren@gmail.com> Co-authored-by: Andrew Jackson (Ajax) <snadrus@gmail.com> Co-authored-by: TippyFlits <james.bluett@protocol.ai>
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package result
|
|
|
|
import "encoding/json"
|
|
|
|
// Result is a small wrapper type encapsulating Value/Error tuples, mostly for
|
|
// use when sending values across channels
|
|
// NOTE: Avoid adding any functionality to this, any "nice" things added here will
|
|
// make it more difficult to switch to a more standardised Result-like type when
|
|
// one gets into the stdlib, or when we will want to switch to a library providing
|
|
// those types.
|
|
type Result[T any] struct {
|
|
Value T
|
|
Error error
|
|
}
|
|
|
|
func Ok[T any](value T) Result[T] {
|
|
return Result[T]{
|
|
Value: value,
|
|
}
|
|
}
|
|
|
|
func Err[T any](err error) Result[T] {
|
|
return Result[T]{
|
|
Error: err,
|
|
}
|
|
}
|
|
|
|
func Wrap[T any](value T, err error) Result[T] {
|
|
return Result[T]{
|
|
Value: value,
|
|
Error: err,
|
|
}
|
|
}
|
|
|
|
func (r Result[T]) Unwrap() (T, error) {
|
|
return r.Value, r.Error
|
|
}
|
|
|
|
func (r Result[T]) Assert(noErrFn func(err error, msgAndArgs ...interface{})) T {
|
|
noErrFn(r.Error)
|
|
|
|
return r.Value
|
|
}
|
|
|
|
// MarshalJSON implements the json.Marshaler interface, marshalling string error correctly
|
|
// this method makes the display in log.Infow nicer
|
|
func (r Result[T]) MarshalJSON() ([]byte, error) {
|
|
if r.Error != nil {
|
|
return json.Marshal(map[string]string{"Error": r.Error.Error()})
|
|
}
|
|
|
|
return json.Marshal(map[string]interface{}{"Value": r.Value})
|
|
}
|