Add Snowflake Event Reporter for Broker Communication

This commit is contained in:
Shelikhoo 2021-12-13 14:10:06 +00:00
parent cd6d837d85
commit c3f09994da
No known key found for this signature in database
GPG key ID: C4D5E79D22B25316

View file

@ -9,6 +9,7 @@ import (
"sync"
"time"
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
"github.com/pion/webrtc/v3"
)
@ -32,6 +33,7 @@ type WebRTCPeer struct {
once sync.Once // Synchronization for PeerConnection destruction
bytesLogger bytesLogger
eventsLogger event.SnowflakeEventReceiver
}
// NewWebRTCPeer constructs a WebRTC PeerConnection to a snowflake proxy.
@ -131,10 +133,21 @@ func (c *WebRTCPeer) connect(config *webrtc.Configuration, broker *BrokerChannel
log.Println(c.id, " connecting...")
// TODO: When go-webrtc is more stable, it's possible that a new
// PeerConnection won't need to be re-prepared each time.
if err := c.preparePeerConnection(config); err != nil {
err := c.preparePeerConnection(config)
localDescription := c.pc.LocalDescription()
c.eventsLogger.OnNewSnowflakeEvent(event.EventOnOfferCreated{
WebRTCLocalDescription: localDescription,
Error: err,
})
if err != nil {
return err
}
answer, err := broker.Negotiate(c.pc.LocalDescription())
answer, err := broker.Negotiate(localDescription)
c.eventsLogger.OnNewSnowflakeEvent(event.EventOnBrokerRendezvous{
WebRTCRemoteDescription: answer,
Error: err,
})
if err != nil {
return err
}