MCPcopy Create free account
hub / github.com/astercloud/aster / StreamFilter

Function StreamFilter

pkg/agent/streaming.go:233–256  ·  view source on GitHub ↗

StreamFilter 辅助函数 - 过滤事件

(reader *stream.Reader[*session.Event], predicate func(*session.Event) bool)

Source from the content-addressed store, hash-verified

231
232// StreamFilter 辅助函数 - 过滤事件
233func StreamFilter(reader *stream.Reader[*session.Event], predicate func(*session.Event) bool) *stream.Reader[*session.Event] {
234 outReader, outWriter := stream.Pipe[*session.Event](10)
235
236 go func() {
237 defer outWriter.Close()
238 for {
239 event, err := reader.Recv()
240 if err != nil {
241 if errors.Is(err, io.EOF) {
242 break
243 }
244 outWriter.Send(nil, err)
245 return
246 }
247 if event != nil && predicate(event) {
248 if outWriter.Send(event, nil) {
249 return
250 }
251 }
252 }
253 }()
254
255 return outReader
256}
257
258// streamConfig 流式执行配置
259type streamConfig struct {

Callers 1

filterExampleFunction · 0.92

Calls 3

RecvMethod · 0.80
CloseMethod · 0.65
SendMethod · 0.45

Tested by

no test coverage detected