mirror of
https://github.com/yggdrasil-network/yggdrasil-go.git
synced 2024-12-21 15:37:33 +00:00
44 lines
821 B
Go
44 lines
821 B
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"net/url"
|
|
"time"
|
|
|
|
"github.com/Arceliar/phony"
|
|
)
|
|
|
|
type linkUNIX struct {
|
|
phony.Inbox
|
|
*links
|
|
dialer *net.Dialer
|
|
listener *net.ListenConfig
|
|
}
|
|
|
|
func (l *links) newLinkUNIX() *linkUNIX {
|
|
lt := &linkUNIX{
|
|
links: l,
|
|
dialer: &net.Dialer{
|
|
Timeout: time.Second * 5,
|
|
KeepAlive: -1,
|
|
},
|
|
listener: &net.ListenConfig{
|
|
KeepAlive: -1,
|
|
},
|
|
}
|
|
return lt
|
|
}
|
|
|
|
func (l *linkUNIX) dial(ctx context.Context, url *url.URL, info linkInfo, options linkOptions) (net.Conn, error) {
|
|
addr, err := net.ResolveUnixAddr("unix", url.Path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return l.dialer.DialContext(ctx, "unix", addr.String())
|
|
}
|
|
|
|
func (l *linkUNIX) listen(ctx context.Context, url *url.URL, _ string) (net.Listener, error) {
|
|
return l.listener.Listen(ctx, "unix", url.Path)
|
|
}
|