github.com/lino-network/lino@v0.6.11/x/validator/handler.go (about) 1 package validator 2 3 import ( 4 "fmt" 5 "reflect" 6 7 sdk "github.com/cosmos/cosmos-sdk/types" 8 9 "github.com/lino-network/lino/x/validator/types" 10 ) 11 12 // NewHandler - Handle all "validator" type messages. 13 func NewHandler(vm ValidatorKeeper) sdk.Handler { 14 return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { 15 switch msg := msg.(type) { 16 case types.ValidatorRegisterMsg: 17 return handleValidatorRegisterMsg(ctx, vm, msg) 18 case types.ValidatorRevokeMsg: 19 return handleValidatorRevokeMsg(ctx, vm, msg) 20 case types.VoteValidatorMsg: 21 return handleVoteValidatorMsg(ctx, vm, msg) 22 case types.ValidatorUpdateMsg: 23 return handleValidatorUpdateMsg(ctx, vm, msg) 24 default: 25 errMsg := fmt.Sprintf("Unrecognized validator msg type: %v", reflect.TypeOf(msg).Name()) 26 return sdk.ErrUnknownRequest(errMsg).Result() 27 } 28 } 29 } 30 31 func handleValidatorRegisterMsg(ctx sdk.Context, vm ValidatorKeeper, msg types.ValidatorRegisterMsg) sdk.Result { 32 if err := vm.RegisterValidator(ctx, msg.Username, msg.ValPubKey, msg.Link); err != nil { 33 return err.Result() 34 } 35 return sdk.Result{} 36 } 37 38 func handleValidatorRevokeMsg( 39 ctx sdk.Context, vm ValidatorKeeper, msg types.ValidatorRevokeMsg) sdk.Result { 40 if err := vm.RevokeValidator(ctx, msg.Username); err != nil { 41 return err.Result() 42 } 43 return sdk.Result{} 44 } 45 46 func handleVoteValidatorMsg( 47 ctx sdk.Context, vm ValidatorKeeper, msg types.VoteValidatorMsg) sdk.Result { 48 if err := vm.VoteValidator(ctx, msg.Username, msg.VotedValidators); err != nil { 49 return err.Result() 50 } 51 return sdk.Result{} 52 } 53 54 func handleValidatorUpdateMsg(ctx sdk.Context, vm ValidatorKeeper, msg types.ValidatorUpdateMsg) sdk.Result { 55 if err := vm.UpdateValidator(ctx, msg.Username, msg.Link); err != nil { 56 return err.Result() 57 } 58 return sdk.Result{} 59 }