summaryrefslogtreecommitdiff
path: root/doc/progs/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'doc/progs/server.go')
-rw-r--r--doc/progs/server.go51
1 files changed, 0 insertions, 51 deletions
diff --git a/doc/progs/server.go b/doc/progs/server.go
deleted file mode 100644
index f3a6b1889..000000000
--- a/doc/progs/server.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import "fmt"
-
-type request struct {
- a, b int
- replyc chan int
-}
-
-type binOp func(a, b int) int
-
-func run(op binOp, req *request) {
- reply := op(req.a, req.b)
- req.replyc <- reply
-}
-
-func server(op binOp, service chan *request) {
- for {
- req := <-service
- go run(op, req) // don't wait for it
- }
-}
-
-func startServer(op binOp) chan *request {
- req := make(chan *request)
- go server(op, req)
- return req
-}
-
-func main() {
- adder := startServer(func(a, b int) int { return a + b })
- const N = 100
- var reqs [N]request
- for i := 0; i < N; i++ {
- req := &reqs[i]
- req.a = i
- req.b = i + N
- req.replyc = make(chan int)
- adder <- req
- }
- for i := N-1; i >= 0; i-- { // doesn't matter what order
- if <-reqs[i].replyc != N + 2*i {
- fmt.Println("fail at", i)
- }
- }
- fmt.Println("done")
-}