func (conn *UnixConn) Close() error {
	close(conn.closeChan)
	return conn.unixConn.Close()
}
Close closes the connection.
package osc
import (
	"context"
	"net"
	"os"
	"path/filepath"
	ulid "github.com/imdario/go-ulid"
	"github.com/pkg/errors"
)
type unixConn interface {
	net.Conn
	netWriter
	ReadFromUnix([]byte) (int, *net.UnixAddr, error)
}
type UnixConn struct {
	unixConn
	closeChan  chan struct{}
	ctx        context.Context
	errChan    chan error
	exactMatch bool
}
func DialUnix(network string, laddr, raddr *net.UnixAddr) (*UnixConn, error) {
	return DialUnixContext(context.Background(), network, laddr, raddr)
}
func DialUnixContext(ctx context.Context, network string, laddr, raddr *net.UnixAddr) (*UnixConn, error) {
	conn, err := net.DialUnix(network, laddr, raddr)
	if err != nil {
		return nil, err
	}
	uc := &UnixConn{
		unixConn:  conn,
		closeChan: make(chan struct{}),
		ctx:       ctx,
		errChan:   make(chan error),
	}
	return uc.initialize()
}
func ListenUnix(network string, laddr *net.UnixAddr) (*UnixConn, error) {
	return ListenUnixContext(context.Background(), network, laddr)
}
func ListenUnixContext(ctx context.Context, network string, laddr *net.UnixAddr) (*UnixConn, error) {
	conn, err := net.ListenUnixgram(network, laddr)
	if err != nil {
		return nil, err
	}
	uc := &UnixConn{
		unixConn:  conn,
		closeChan: make(chan struct{}),
		ctx:       ctx,
		errChan:   make(chan error),
	}
	return uc.initialize()
}