
func Pipe(p Παραγωγός, c Καταναλωτής) error {
// TODO
buf := make([]any, 0, MaxItems)
cookies := make([]int, 0)
flush := func() error {
if len(buf) == 0 {
return nil
}
if err := c.Process(buf); err != nil {
return err
}
for _, cookie := range cookies {
if err := p.Commit(cookie); err != nil {
return err
}
}
buf = buf[:0]
cookies = cookies[:0]
return nil
}
for {
items, cookie, err := p.Next()
if err != nil {
flush()
return err
}