|
|
|
|
@ -36,7 +36,7 @@ type PeerConnection struct {
@@ -36,7 +36,7 @@ type PeerConnection struct {
|
|
|
|
|
newLocalCandidate chan *webrtc.ICECandidateInit |
|
|
|
|
connected chan struct{} |
|
|
|
|
disconnected chan struct{} |
|
|
|
|
closed chan struct{} |
|
|
|
|
done chan struct{} |
|
|
|
|
gatheringDone chan struct{} |
|
|
|
|
incomingTrack chan trackRecvPair |
|
|
|
|
|
|
|
|
|
@ -59,7 +59,7 @@ func (co *PeerConnection) Start() error {
@@ -59,7 +59,7 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
co.newLocalCandidate = make(chan *webrtc.ICECandidateInit) |
|
|
|
|
co.connected = make(chan struct{}) |
|
|
|
|
co.disconnected = make(chan struct{}) |
|
|
|
|
co.closed = make(chan struct{}) |
|
|
|
|
co.done = make(chan struct{}) |
|
|
|
|
co.gatheringDone = make(chan struct{}) |
|
|
|
|
co.incomingTrack = make(chan trackRecvPair) |
|
|
|
|
|
|
|
|
|
@ -85,7 +85,7 @@ func (co *PeerConnection) Start() error {
@@ -85,7 +85,7 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
co.wr.OnTrack(func(track *webrtc.TrackRemote, receiver *webrtc.RTPReceiver) { |
|
|
|
|
select { |
|
|
|
|
case co.incomingTrack <- trackRecvPair{track, receiver}: |
|
|
|
|
case <-co.closed: |
|
|
|
|
case <-co.ctx.Done(): |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
@ -95,7 +95,7 @@ func (co *PeerConnection) Start() error {
@@ -95,7 +95,7 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
defer co.stateChangeMutex.Unlock() |
|
|
|
|
|
|
|
|
|
select { |
|
|
|
|
case <-co.closed: |
|
|
|
|
case <-co.done: |
|
|
|
|
return |
|
|
|
|
default: |
|
|
|
|
} |
|
|
|
|
@ -113,7 +113,7 @@ func (co *PeerConnection) Start() error {
@@ -113,7 +113,7 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
close(co.disconnected) |
|
|
|
|
|
|
|
|
|
case webrtc.PeerConnectionStateClosed: |
|
|
|
|
close(co.closed) |
|
|
|
|
close(co.done) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
@ -123,7 +123,6 @@ func (co *PeerConnection) Start() error {
@@ -123,7 +123,6 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
select { |
|
|
|
|
case co.newLocalCandidate <- &v: |
|
|
|
|
case <-co.connected: |
|
|
|
|
case <-co.closed: |
|
|
|
|
case <-co.ctx.Done(): |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
@ -138,7 +137,7 @@ func (co *PeerConnection) Start() error {
@@ -138,7 +137,7 @@ func (co *PeerConnection) Start() error {
|
|
|
|
|
func (co *PeerConnection) Close() { |
|
|
|
|
co.ctxCancel() |
|
|
|
|
co.wr.Close() //nolint:errcheck
|
|
|
|
|
<-co.closed |
|
|
|
|
<-co.done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// CreatePartialOffer creates a partial offer.
|
|
|
|
|
|