Remove pipe from this change.
This commit is contained in:
@ -1,67 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"net"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
|
||||||
)
|
|
||||||
|
|
||||||
type memAddr string
|
|
||||||
|
|
||||||
func (a memAddr) Network() string { return "mem" }
|
|
||||||
func (a memAddr) String() string { return string(a) }
|
|
||||||
|
|
||||||
type memListener struct {
|
|
||||||
c chan net.Conn
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ln *memListener) Accept() (net.Conn, error) {
|
|
||||||
conn, ok := <-ln.c
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("closed")
|
|
||||||
}
|
|
||||||
return conn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ln *memListener) Addr() net.Addr {
|
|
||||||
return memAddr(fmt.Sprintf("%p", ln))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ln *memListener) Close() error {
|
|
||||||
close(ln.c)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
grpc.EnableTracing = true
|
|
||||||
|
|
||||||
ln := &memListener{
|
|
||||||
c: make(chan net.Conn, 1),
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
s := grpc.NewServer()
|
|
||||||
log.Fatal(s.Serve(ln))
|
|
||||||
}()
|
|
||||||
|
|
||||||
log.Printf("Dialing to server over a synchronous pipe...")
|
|
||||||
serverConn, err := grpc.Dial("inmemory",
|
|
||||||
grpc.WithInsecure(),
|
|
||||||
grpc.WithBlock(),
|
|
||||||
grpc.WithDialer(func(_ string, _ time.Duration) (net.Conn, error) {
|
|
||||||
c1, c2 := net.Pipe()
|
|
||||||
log.Printf("Pipe created: %v %v", c1, c2)
|
|
||||||
ln.c <- c2
|
|
||||||
log.Printf("Pipe accepted: %v %v", c1, c2)
|
|
||||||
return c1, nil
|
|
||||||
}))
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BUG: never reached
|
|
||||||
log.Printf("SUCCESS! Connected to server: %v", serverConn)
|
|
||||||
}
|
|
Reference in New Issue
Block a user