// Test: do chan arrays preserve pipe-bound tracking? package main import ( "fmt" "smesh.lol/pkg/relay/wire" ) func worker(in chan wire.IngestRequest, out chan wire.IngestResponse) { req, ok := <-in if !ok { return } resp := wire.IngestResponse{ReqID: req.ReqID, Verdict: wire.VerdictAccept} out <- resp } func main() { const N = 4 ins := [N]chan wire.IngestRequest{} outs := [N]chan wire.IngestResponse{} for i := 0; i < N; i++ { ins[i] = chan wire.IngestRequest{} outs[i] = chan wire.IngestResponse{} spawn(worker, ins[i], outs[i]) } // Try send via array index for i := 0; i < N; i++ { ins[i] <- wire.IngestRequest{ReqID: uint32(i)} } // Try recv via array index for i := 0; i < N; i++ { resp := <-outs[i] fmt.Printf("got reqID=%d verdict=%d\n", resp.ReqID, resp.Verdict) } println("done") }