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