MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / handleChangeAPINode

Method handleChangeAPINode

internal/nodes/api_stream.go:425–481  ·  view source on GitHub ↗

修改API地址

(message *pb.NodeStreamMessage)

Source from the content-addressed store, hash-verified

423
424// 修改API地址
425func (this *APIStream) handleChangeAPINode(message *pb.NodeStreamMessage) error {
426 config, err := configs.LoadAPIConfig()
427 if err != nil {
428 this.replyFail(message.RequestId, "read config error: "+err.Error())
429 return nil
430 }
431
432 var messageData = &messageconfigs.ChangeAPINodeMessage{}
433 err = json.Unmarshal(message.DataJSON, messageData)
434 if err != nil {
435 this.replyFail(message.RequestId, "unmarshal message failed: "+err.Error())
436 return nil
437 }
438
439 _, err = url.Parse(messageData.Addr)
440 if err != nil {
441 this.replyFail(message.RequestId, "invalid new api node address: '"+messageData.Addr+"'")
442 return nil
443 }
444
445 config.RPCEndpoints = []string{messageData.Addr}
446
447 // 保存到文件
448 err = config.WriteFile(Tea.ConfigFile(configs.ConfigFileName))
449 if err != nil {
450 this.replyFail(message.RequestId, "save config file failed: "+err.Error())
451 return nil
452 }
453
454 this.replyOk(message.RequestId, "")
455
456 goman.New(func() {
457 // 延后生效,防止变更前的API无法读取到状态
458 time.Sleep(1 * time.Second)
459
460 rpcClient, err := rpc.SharedRPC()
461 if err != nil {
462 remotelogs.Error("API_STREAM", "change rpc endpoint to '"+
463 messageData.Addr+"' failed: "+err.Error())
464 return
465 }
466
467 rpcClient.Close()
468
469 err = rpcClient.UpdateConfig(config)
470 if err != nil {
471 remotelogs.Error("API_STREAM", "change rpc endpoint to '"+
472 messageData.Addr+"' failed: "+err.Error())
473 return
474 }
475
476 remotelogs.Println("API_STREAM", "change rpc endpoint to '"+
477 messageData.Addr+"' successfully")
478 })
479
480 return nil
481}
482

Callers 1

loopMethod · 0.95

Calls 12

replyFailMethod · 0.95
replyOkMethod · 0.95
LoadAPIConfigFunction · 0.92
NewFunction · 0.92
SharedRPCFunction · 0.92
ErrorFunction · 0.92
PrintlnFunction · 0.92
ParseMethod · 0.80
WriteFileMethod · 0.80
UpdateConfigMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected