dsfx/shared/dnet/dnet.go

46 lines
826 B
Go
Raw Normal View History

2025-03-08 15:07:27 -05:00
package dnet
import (
"context"
"crypto/ecdsa"
"net"
"koti.casa/numenor-labs/dsfx/shared/dlog"
)
// Dial ...
func Dial(
ctx context.Context,
2025-03-09 12:33:27 -04:00
identity *ecdsa.PrivateKey,
laddr *Addr,
raddr *Addr,
2025-03-08 15:07:27 -05:00
) (*Conn, error) {
2025-03-09 12:33:27 -04:00
conn, err := net.DialTCP("tcp", laddr.TCPAddr(), raddr.TCPAddr())
2025-03-08 15:07:27 -05:00
if err != nil {
return nil, err
}
2025-03-09 12:33:27 -04:00
sessionKey, err := Handshake(ctx, conn, identity, raddr.PublicKey())
2025-03-08 15:07:27 -05:00
if err != nil {
return nil, err
}
2025-03-09 12:33:27 -04:00
return NewConn(conn, sessionKey, laddr.PublicKey(), raddr.PublicKey()), nil
2025-03-08 15:07:27 -05:00
}
// Listen ...
func Listen(
ctx context.Context,
identity *ecdsa.PrivateKey,
2025-03-09 12:33:27 -04:00
laddr *Addr,
2025-03-08 15:07:27 -05:00
) (net.Listener, error) {
2025-03-09 12:33:27 -04:00
tcpListener, err := net.ListenTCP("tcp", laddr.TCPAddr())
2025-03-08 15:07:27 -05:00
if err != nil {
return nil, err
}
logger := dlog.FromContext(ctx)
return &Listener{logger, tcpListener, identity}, nil
}