李度、马也驰 25spring数据库系统 p1仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
740 B

package nodes
import (
)
// leader node作为server为client注册的方法
type ServerReply struct{
Isconnect bool
HaveValue bool
Value string
}
// RPC call
func (node *Node) WriteKV(kv LogEntry, reply *ServerReply) error {
log.Info("server write : " + kv.Key)
node.log = append(node.log, kv)
// 广播给其它节点
node.BroadCastKV(kv)
reply.Isconnect = true
return nil
}
// RPC call
func (node *Node) ReadKey(key string, reply *ServerReply) error {
log.Info("server read : " + key)
// 先只读leader自己
for _, kv := range node.log {
if kv.Key == key {
reply.Value = kv.Value
reply.HaveValue = true
reply.Isconnect = true
return nil
}
}
reply.HaveValue = false
reply.Isconnect = true
return nil
}