beam: replace SendPair() with the simpler SendConn()
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
This commit is contained in:
parent
e92f305c1c
commit
c27c56ca37
2 changed files with 12 additions and 12 deletions
20
beam/beam.go
20
beam/beam.go
|
@ -36,10 +36,10 @@ func SendPipe(dst Sender, data []byte) (*os.File, error) {
|
||||||
return w, nil
|
return w, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendPair(dst Sender, data []byte) (in ReceiveCloser, out SendCloser, err error) {
|
func SendConn(dst Sender, data []byte) (conn *UnixConn, err error) {
|
||||||
local, remote, err := SocketPair()
|
local, remote, err := SocketPair()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -47,22 +47,22 @@ func SendPair(dst Sender, data []byte) (in ReceiveCloser, out SendCloser, err er
|
||||||
remote.Close()
|
remote.Close()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
endpoint, err := FileConn(local)
|
conn, err = FileConn(local)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
local.Close()
|
local.Close()
|
||||||
if err := dst.Send(data, remote); err != nil {
|
if err := dst.Send(data, remote); err != nil {
|
||||||
return nil, nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ReceiveCloser(endpoint), SendCloser(endpoint), nil
|
return conn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReceivePair(src Receiver) ([]byte, Receiver, Sender, error) {
|
func ReceiveConn(src Receiver) ([]byte, *UnixConn, error) {
|
||||||
for {
|
for {
|
||||||
data, f, err := src.Receive()
|
data, f, err := src.Receive()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
if f == nil {
|
if f == nil {
|
||||||
// Skip empty attachments
|
// Skip empty attachments
|
||||||
|
@ -74,10 +74,10 @@ func ReceivePair(src Receiver) ([]byte, Receiver, Sender, error) {
|
||||||
// (for example might be a regular file, directory etc)
|
// (for example might be a regular file, directory etc)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return data, Receiver(conn), Sender(conn), nil
|
return data, conn, nil
|
||||||
}
|
}
|
||||||
panic("impossibru!")
|
panic("impossibru!")
|
||||||
return nil, nil, nil, nil
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Copy(dst Sender, src Receiver) (int, error) {
|
func Copy(dst Sender, src Receiver) (int, error) {
|
||||||
|
|
|
@ -17,13 +17,13 @@ import (
|
||||||
// not point to a connection, that message will be skipped.
|
// not point to a connection, that message will be skipped.
|
||||||
//
|
//
|
||||||
func Listen(conn Sender, name string) (net.Listener, error) {
|
func Listen(conn Sender, name string) (net.Listener, error) {
|
||||||
in, _, err := SendPair(conn, []byte(name))
|
endpoint, err := SendConn(conn, []byte(name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &listener{
|
return &listener{
|
||||||
name: name,
|
name: name,
|
||||||
endpoint: in,
|
endpoint: endpoint,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue