github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/internal/runtime/funcs/println.go (about) 1 package funcs 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/nevalang/neva/internal/runtime" 8 ) 9 10 type println struct{} 11 12 func (p println) Create(io runtime.FuncIO, _ runtime.Msg) (func(ctx context.Context), error) { 13 dataIn, err := io.In.Port("data") 14 if err != nil { 15 return nil, err 16 } 17 18 sigOut, err := io.Out.Port("sig") 19 if err != nil { 20 return nil, err 21 } 22 23 return func(ctx context.Context) { 24 var data runtime.Msg 25 26 for { 27 select { 28 case <-ctx.Done(): 29 return 30 case data = <-dataIn: 31 } 32 33 if _, err := fmt.Println(data); err != nil { 34 panic(err) 35 } 36 37 select { 38 case <-ctx.Done(): 39 return 40 case sigOut <- data: 41 } 42 } 43 }, nil 44 }