forked from forks/go-ethereum
* simv2: wip * simulation: exec adapter start/stop * simulation: add node status to exec adapter * simulation: initial simulation code * simulation: exec adapter, configure path to executable * simulation: initial docker adapter * simulation: wip kubernetes adapter * simulation: kubernetes adapter proxy * simulation: implement GetAll/StartAll/StopAll * simulation: kuberentes adapter - set env vars and resource limits * simulation: discovery test * simulation: remove port definitions within docker adapter * simulation: simplify wait for healthy loop * simulation: get nat ip addr from interface * simulation: pull docker images automatically * simulation: NodeStatus -> NodeInfo * simulation: move discovery test to example dir * simulation: example snapshot usage * simulation: add goclient specific simulation * simulation: add peer connections to snapshot * simulation: close rpc client * simulation: don't export kubernetes proxy server * simulation: merge simulation code * simulation: don't export nodemap * simulation: rename SimulationSnapshot -> Snapshot * simulation: linting fixes * simulation: add k8s available helper func * simulation: vendor * simulation: fix 'no non-test Go files' when building * simulation: remove errors from interface methods where non were returned * simulation: run getHealthInfo check in parallel
39 lines
925 B
Go
39 lines
925 B
Go
// +build !windows
|
|
|
|
package sockets
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"syscall"
|
|
"time"
|
|
)
|
|
|
|
const maxUnixSocketPathSize = len(syscall.RawSockaddrUnix{}.Path)
|
|
|
|
func configureUnixTransport(tr *http.Transport, proto, addr string) error {
|
|
if len(addr) > maxUnixSocketPathSize {
|
|
return fmt.Errorf("Unix socket path %q is too long", addr)
|
|
}
|
|
// No need for compression in local communications.
|
|
tr.DisableCompression = true
|
|
dialer := &net.Dialer{
|
|
Timeout: defaultTimeout,
|
|
}
|
|
tr.DialContext = func(ctx context.Context, _, _ string) (net.Conn, error) {
|
|
return dialer.DialContext(ctx, proto, addr)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func configureNpipeTransport(tr *http.Transport, proto, addr string) error {
|
|
return ErrProtocolNotAvailable
|
|
}
|
|
|
|
// DialPipe connects to a Windows named pipe.
|
|
// This is not supported on other OSes.
|
|
func DialPipe(_ string, _ time.Duration) (net.Conn, error) {
|
|
return nil, syscall.EAFNOSUPPORT
|
|
}
|