* * @brief: 把raft和kvraft的挂到RPC上 */
()
| 151 | * @brief: 把raft和kvraft的挂到RPC上 |
| 152 | */ |
| 153 | func (cfg *ServerConfig) serverRegisterFun() { |
| 154 | // 注册RPC时只要结构体中有不符合要求的成员函数存在就会打印日志,挺烦的 |
| 155 | // 把RaftKv挂到RPC上 |
| 156 | err := rpc.Register(cfg.kvserver) |
| 157 | if err != nil { |
| 158 | // RPC会把全部函数中满足规则的函数注册,如果存在不满足规则的函数则会返回err |
| 159 | log.Println(err.Error()) |
| 160 | } else { |
| 161 | log.Println("INFO : Kvserver has been successfully registered.") |
| 162 | } |
| 163 | |
| 164 | // 把Raft挂到RPC上 |
| 165 | err1 := rpc.Register(cfg.kvserver.GetRaft()) |
| 166 | if err1 != nil { |
| 167 | log.Println(err1.Error()) |
| 168 | } else { |
| 169 | log.Println("INFO : Raft has been successfully registered.") |
| 170 | } |
| 171 | |
| 172 | // 通过函数把mathutil中提供的服务注册到http协议上,方便调用者可以利用http的方式进行数据传输 |
| 173 | rpc.HandleHTTP() |
| 174 | |
| 175 | // 在特定的端口进行监听 |
| 176 | listen, err2 := net.Listen("tcp", cfg.MyPort) |
| 177 | if err2 != nil { |
| 178 | log.Println(err2.Error()) |
| 179 | } |
| 180 | go func() { |
| 181 | // 调用方法去处理http请求 |
| 182 | http.Serve(listen, nil) |
| 183 | }() |
| 184 | } |
| 185 | |
| 186 | /* |
| 187 | * @brief: 检查从json中解析的字段是否符合规定 |
no test coverage detected