//处理节点去运算 func runSummary(inputName string, node *Summary) { for rows := range node.Output { //接收数据 if ns, ok := link[inputName]; ok { //如果有节点需要本节点的输出 for _, fname := range ns { //给所有节点 summarys[fname].Write(rows) //写数据 } } //如果需要保存到CACHE,这里处理 // log.Infof("node is %v", node.Config.EnableStore, inputName, rows.Time) cache.AddRowsToCache(inputName, rows) } }
//处理数据输入流 func runInput(inputName string, in input.InputStartFace) { begin: out := in.GetOutput() for r := range out { //收到一条输出数据,两种选择,一是传给需要的节点,二是保存到缓存 go func(r *common.DataRows) { if ns, ok := link[inputName]; ok { //如果有节点需要本节点的输出 for _, fname := range ns { //给所有节点 summarys[fname].Write(r) //写数据 } } //如果需要保存到CACHE,这里处理 //log.Infof("input is %v", in.GetConfig().EnableStore, inputName, r.Time) cache.AddRowsToCache(inputName, r) }(r) } if common.IsRun { //如果程序还没有结束,就重新启动INPUT in.Start() goto begin } }