35 lines
642 B
Go
35 lines
642 B
Go
|
package daemonconn
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
const DefaultUnixSocketPath = "/tmp/liberum.sock"
|
||
|
|
||
|
func UnixSocketListen(socketPath string) (<-chan DaemonConn, error) {
|
||
|
listener, err := net.Listen("unix", "/tmp/liberum.sock")
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
connChan := make(chan DaemonConn, 32)
|
||
|
|
||
|
go func() {
|
||
|
var conn net.Conn
|
||
|
for conn, err = listener.Accept(); err == nil; {
|
||
|
connChan <- FromConn(conn)
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
return connChan, err
|
||
|
}
|
||
|
|
||
|
func UnixSocketConnect(socketPath string) (DaemonConn, error) {
|
||
|
conn, err := net.Dial("unix", DefaultUnixSocketPath)
|
||
|
if err != nil {
|
||
|
return DaemonConn{}, err
|
||
|
}
|
||
|
|
||
|
return FromConn(conn), nil
|
||
|
}
|