MCPcopy Create free account
hub / github.com/Super-long/ChubbyGo / StartServer

Method StartServer

Connect/server_handler.go:250–287  ·  view source on GitHub ↗

* * @brief: 再调用这个函数的时候开始服务, * @return: 三种返回类型:路径解析错误;connectAll连接出现问题;成功 */

()

Source from the content-addressed store, hash-verified

248 * @return: 三种返回类型:路径解析错误;connectAll连接出现问题;成功
249 */
250func (cfg *ServerConfig) StartServer() error {
251 var flag bool = false
252 if len(ServerListeners) == 1 {
253 // 正确读取配置文件;这里注意,checkJsonParser是检查范围和字符串的格式,解析的过程会把int转string之间的错误解析出来
254 flag = ServerListeners[0]("Config/server_config.json", cfg)
255 if !flag { // 文件打开失败
256 log.Printf("Open config File Error!")
257 return ErrorInStartServer(parser_error)
258 }
259
260 // 从json中取出的字段格式错误
261 if ParserErr := cfg.checkJsonParser(); ParserErr != nil {
262 log.Println(ParserErr.Error())
263 return ErrorInStartServer(parser_error)
264 }
265
266 // 填充cfg.Persister
267 cfg.fillPersister()
268
269 } else {
270 log.Printf("ERROR : [%d] ServerListeners Error!\n", cfg.me)
271 // 这种情况只有在调用服务没有启动read_server_config.go的init函数时会出现
272 return ErrorInStartServer(Listener_error)
273 }
274
275 // 这里初始化的原因是要让注册的结构体是后面运行的结构体
276 cfg.kvserver = BaseServer.StartKVServerInit(cfg.me, cfg.persister, cfg.MaxRaftState, transformChubbyGomap2uint32(cfg.ChubbyGoMapStrategy))
277 cfg.kvserver.StartRaftServer(&cfg.ServersAddress)
278
279 cfg.serverRegisterFun()
280 if err := cfg.connectAll(); err != nil {
281 log.Println(err.Error())
282 return ErrorInStartServer(connect_error)
283 }
284 cfg.kvserver.StartKVServer(cfg.peers) // 启动服务
285 log.Printf("INFO : [%d] The connection is successful and the service has started successfully!\n", cfg.me)
286 return nil
287}
288
289/*
290 * @brief: 返回一个Config结构体,用于开始一个服务

Callers 1

mainFunction · 0.80

Calls 9

checkJsonParserMethod · 0.95
fillPersisterMethod · 0.95
serverRegisterFunMethod · 0.95
connectAllMethod · 0.95
ErrorInStartServerTypeAlias · 0.85
StartRaftServerMethod · 0.80
StartKVServerMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected