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

Method loop

internal/nodes/api_stream.go:65–131  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

63}
64
65func (this *APIStream) loop() error {
66 rpcClient, err := rpc.SharedRPC()
67 if err != nil {
68 return errors.Wrap(err)
69 }
70
71 ctx, cancelFunc := context.WithCancel(rpcClient.Context())
72 this.cancelFunc = cancelFunc
73
74 defer func() {
75 cancelFunc()
76 }()
77
78 nodeStream, err := rpcClient.NodeRPC.NodeStream(ctx)
79 if err != nil {
80 if this.isQuiting {
81 return nil
82 }
83 return err
84 }
85 this.stream = nodeStream
86
87 for {
88 if this.isQuiting {
89 remotelogs.Println("API_STREAM", "quit")
90 break
91 }
92
93 message, streamErr := nodeStream.Recv()
94 if streamErr != nil {
95 if this.isQuiting {
96 remotelogs.Println("API_STREAM", "quit")
97 return nil
98 }
99 return streamErr
100 }
101
102 // 处理消息
103 switch message.Code {
104 case messageconfigs.MessageCodeConnectedAPINode: // 连接API节点成功
105 err = this.handleConnectedAPINode(message)
106 case messageconfigs.MessageCodeWriteCache: // 写入缓存
107 err = this.handleWriteCache(message)
108 case messageconfigs.MessageCodeReadCache: // 读取缓存
109 err = this.handleReadCache(message)
110 case messageconfigs.MessageCodeStatCache: // 统计缓存
111 err = this.handleStatCache(message)
112 case messageconfigs.MessageCodeCleanCache: // 清理缓存
113 err = this.handleCleanCache(message)
114 case messageconfigs.MessageCodeNewNodeTask: // 有新的任务
115 err = this.handleNewNodeTask(message)
116 case messageconfigs.MessageCodeCheckSystemdService: // 检查Systemd服务
117 err = this.handleCheckSystemdService(message)
118 case messageconfigs.MessageCodeCheckLocalFirewall: // 检查本地防火墙
119 err = this.handleCheckLocalFirewall(message)
120 case messageconfigs.MessageCodeChangeAPINode: // 修改API节点地址
121 err = this.handleChangeAPINode(message)
122 default:

Callers 1

StartMethod · 0.95

Calls 15

handleWriteCacheMethod · 0.95
handleReadCacheMethod · 0.95
handleStatCacheMethod · 0.95
handleCleanCacheMethod · 0.95
handleNewNodeTaskMethod · 0.95
handleChangeAPINodeMethod · 0.95
handleUnknownMessageMethod · 0.95
SharedRPCFunction · 0.92
WrapFunction · 0.92

Tested by

no test coverage detected