Skip to content

Commit

Permalink
Move fakePacketConn to dedicated file
Browse files Browse the repository at this point in the history
This is a first step to cleanup the gatherer code
  • Loading branch information
stv0g committed Feb 10, 2023
1 parent 19ffbe7 commit 359f068
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 20 deletions.
22 changes: 2 additions & 20 deletions gather.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"time"

"github.com/pion/dtls/v2"
"github.com/pion/ice/v2/internal/fakenet"
"github.com/pion/logging"
"github.com/pion/turn/v2"
)
Expand All @@ -36,25 +37,6 @@ func closeConnAndLog(c closeable, log logging.LeveledLogger, msg string) {
}
}

// fakePacketConn wraps a net.Conn and emulates net.PacketConn
type fakePacketConn struct {
nextConn net.Conn
}

func (f *fakePacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
n, err = f.nextConn.Read(p)
addr = f.nextConn.RemoteAddr()
return
}
func (f *fakePacketConn) Close() error { return f.nextConn.Close() }
func (f *fakePacketConn) LocalAddr() net.Addr { return f.nextConn.LocalAddr() }
func (f *fakePacketConn) SetDeadline(t time.Time) error { return f.nextConn.SetDeadline(t) }
func (f *fakePacketConn) SetReadDeadline(t time.Time) error { return f.nextConn.SetReadDeadline(t) }
func (f *fakePacketConn) SetWriteDeadline(t time.Time) error { return f.nextConn.SetWriteDeadline(t) }
func (f *fakePacketConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
return f.nextConn.Write(p)
}

// GatherCandidates initiates the trickle based gathering process.
func (a *Agent) GatherCandidates() error {
var gatherErr error
Expand Down Expand Up @@ -620,7 +602,7 @@ func (a *Agent) gatherCandidatesRelay(ctx context.Context, urls []*URL) { //noli
RelAddr = conn.LocalAddr().(*net.UDPAddr).IP.String() //nolint:forcetypeassert
RelPort = conn.LocalAddr().(*net.UDPAddr).Port //nolint:forcetypeassert
relayProtocol = "dtls"
locConn = &fakePacketConn{conn}
locConn = &fakenet.PacketConn{Conn: conn}
case url.Proto == ProtoTypeTCP && url.Scheme == SchemeTypeTURNS:
tcpAddr, resolvErr := a.net.ResolveTCPAddr(NetworkTypeTCP4.String(), TURNServerAddr)
if resolvErr != nil {
Expand Down
26 changes: 26 additions & 0 deletions internal/fakenet/packet_conn.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Package fakenet contains fake network abstractions
package fakenet

import (
"net"
)

// Compile-time assertion
var _ net.PacketConn = (*PacketConn)(nil)

// PacketConn wraps a net.Conn and emulates net.PacketConn
type PacketConn struct {
net.Conn
}

// ReadFrom reads a packet from the connection,
func (f *PacketConn) ReadFrom(p []byte) (n int, addr net.Addr, err error) {
n, err = f.Conn.Read(p)
addr = f.Conn.RemoteAddr()
return
}

// WriteTo writes a packet with payload p to addr.
func (f *PacketConn) WriteTo(p []byte, addr net.Addr) (int, error) {
return f.Conn.Write(p)
}
2 changes: 2 additions & 0 deletions internal/internal.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Package internal implements internal functionality for Pions ICE module
package internal

0 comments on commit 359f068

Please sign in to comment.