github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/rpc/ipc_windows.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:42</date> 10 //</624450109081391104> 11 12 13 //+构建窗口 14 15 package rpc 16 17 import ( 18 "context" 19 "net" 20 "time" 21 22 "gopkg.in/natefinch/npipe.v2" 23 ) 24 25 //如果拨号上下文没有截止时间,则使用此选项。它比 26 //默认拨号超时,因为命名管道是本地的,不需要等待太长时间。 27 const defaultPipeDialTimeout = 2 * time.Second 28 29 //ipclisten将在给定的端点上创建命名管道。 30 func ipcListen(endpoint string) (net.Listener, error) { 31 return npipe.Listen(endpoint) 32 } 33 34 //NewIPCConnection将连接到具有给定端点作为名称的命名管道。 35 func newIPCConnection(ctx context.Context, endpoint string) (net.Conn, error) { 36 timeout := defaultPipeDialTimeout 37 if deadline, ok := ctx.Deadline(); ok { 38 timeout = deadline.Sub(time.Now()) 39 if timeout < 0 { 40 timeout = 0 41 } 42 } 43 return npipe.DialTimeout(endpoint, timeout) 44 } 45