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  }