github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/rpc/ipc_unix.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 12:09:45</date>
    10  //</624342664774422528>
    11  
    12  
    13  //+构建darwin dragonfly freebsd linux nacl netbsd openbsd solaris
    14  
    15  package rpc
    16  
    17  import (
    18  	"context"
    19  	"net"
    20  	"os"
    21  	"path/filepath"
    22  )
    23  
    24  //ipclisten将在给定的端点上创建一个Unix套接字。
    25  func ipcListen(endpoint string) (net.Listener, error) {
    26  //确保存在IPC路径,并删除以前的任何剩余部分
    27  	if err := os.MkdirAll(filepath.Dir(endpoint), 0751); err != nil {
    28  		return nil, err
    29  	}
    30  	os.Remove(endpoint)
    31  	l, err := net.Listen("unix", endpoint)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  	os.Chmod(endpoint, 0600)
    36  	return l, nil
    37  }
    38  
    39  //newipcconnection将连接到给定端点上的UNIX套接字。
    40  func newIPCConnection(ctx context.Context, endpoint string) (net.Conn, error) {
    41  	return dialContext(ctx, "unix", endpoint)
    42  }
    43