mirror of
https://github.com/talent-plan/tinykv.git
synced 2024-12-27 13:20:24 +08:00
16b8058220
* close file
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package raftstore
|
|
|
|
import (
|
|
"github.com/pingcap-incubator/tinykv/kv/raftstore/util"
|
|
"github.com/pingcap-incubator/tinykv/proto/pkg/errorpb"
|
|
"github.com/pingcap-incubator/tinykv/proto/pkg/raft_cmdpb"
|
|
)
|
|
|
|
func ensureRespHeader(resp *raft_cmdpb.RaftCmdResponse) {
|
|
header := resp.GetHeader()
|
|
if header == nil {
|
|
resp.Header = &raft_cmdpb.RaftResponseHeader{}
|
|
}
|
|
}
|
|
|
|
func BindRespTerm(resp *raft_cmdpb.RaftCmdResponse, term uint64) {
|
|
if term == 0 {
|
|
return
|
|
}
|
|
ensureRespHeader(resp)
|
|
resp.Header.CurrentTerm = term
|
|
}
|
|
|
|
func BindRespError(resp *raft_cmdpb.RaftCmdResponse, err error) {
|
|
ensureRespHeader(resp)
|
|
resp.Header.Error = util.RaftstoreErrToPbError(err)
|
|
}
|
|
|
|
func ErrResp(err error) *raft_cmdpb.RaftCmdResponse {
|
|
resp := &raft_cmdpb.RaftCmdResponse{Header: &raft_cmdpb.RaftResponseHeader{}}
|
|
BindRespError(resp, err)
|
|
return resp
|
|
}
|
|
|
|
func ErrRespWithTerm(err error, term uint64) *raft_cmdpb.RaftCmdResponse {
|
|
resp := ErrResp(err)
|
|
BindRespTerm(resp, term)
|
|
return resp
|
|
}
|
|
|
|
func ErrRespStaleCommand(term uint64) *raft_cmdpb.RaftCmdResponse {
|
|
return ErrRespWithTerm(new(util.ErrStaleCommand), term)
|
|
}
|
|
|
|
func ErrRespRegionNotFound(regionID uint64) *raft_cmdpb.RaftCmdResponse {
|
|
return &raft_cmdpb.RaftCmdResponse{
|
|
Header: &raft_cmdpb.RaftResponseHeader{
|
|
Error: &errorpb.Error{
|
|
Message: "region is not found",
|
|
RegionNotFound: &errorpb.RegionNotFound{
|
|
RegionId: regionID,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func newCmdResp() *raft_cmdpb.RaftCmdResponse {
|
|
return &raft_cmdpb.RaftCmdResponse{
|
|
Header: &raft_cmdpb.RaftResponseHeader{},
|
|
}
|
|
}
|