github.com/cosmos/cosmos-sdk@v0.50.10/types/tx/msgs.go (about) 1 package tx 2 3 import ( 4 fmt "fmt" 5 6 "github.com/cosmos/cosmos-sdk/codec/types" 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 ) 9 10 const ( 11 msgResponseInterfaceProtoName = "cosmos.tx.v1beta1.MsgResponse" 12 ) 13 14 // MsgResponse is the interface all Msg server handlers' response types need to 15 // implement. It's the interface that's representing all Msg responses packed 16 // in Anys. 17 type MsgResponse interface{} 18 19 // SetMsgs takes a slice of sdk.Msg's and turn them into Any's. 20 func SetMsgs(msgs []sdk.Msg) ([]*types.Any, error) { 21 anys := make([]*types.Any, len(msgs)) 22 for i, msg := range msgs { 23 var err error 24 anys[i], err = types.NewAnyWithValue(msg) 25 if err != nil { 26 return nil, err 27 } 28 } 29 return anys, nil 30 } 31 32 // GetMsgs takes a slice of Any's and turn them into sdk.Msg's. 33 func GetMsgs(anys []*types.Any, name string) ([]sdk.Msg, error) { 34 msgs := make([]sdk.Msg, len(anys)) 35 for i, any := range anys { 36 cached := any.GetCachedValue() 37 if cached == nil { 38 return nil, fmt.Errorf("any cached value is nil, %s messages must be correctly packed any values", name) 39 } 40 msgs[i] = cached.(sdk.Msg) 41 } 42 return msgs, nil 43 } 44 45 // UnpackInterfaces unpacks Any's to sdk.Msg's. 46 func UnpackInterfaces(unpacker types.AnyUnpacker, anys []*types.Any) error { 47 for _, any := range anys { 48 var msg sdk.Msg 49 err := unpacker.UnpackAny(any, &msg) 50 if err != nil { 51 return err 52 } 53 } 54 55 return nil 56 }