croc/pkg/session/bench/session.go

60 lines
1.2 KiB
Go

package bench
import (
"github.com/pion/webrtc/v2"
log "github.com/sirupsen/logrus"
)
// Useful for unit tests
func (s *Session) onNewDataChannelHelper(name string, channelID uint16, d *webrtc.DataChannel) {
log.Tracef("New DataChannel %s (id: %x)\n", name, channelID)
switch channelID {
case s.downloadChannelID():
log.Traceln("Created Download data channel")
d.OnClose(s.onCloseHandlerDownload())
go s.onOpenHandlerDownload(d)()
case s.uploadChannelID():
log.Traceln("Created Upload data channel")
default:
log.Warningln("Created unknown data channel")
}
}
func (s *Session) onNewDataChannel() func(d *webrtc.DataChannel) {
return func(d *webrtc.DataChannel) {
if d == nil || d.ID() == nil {
return
}
s.onNewDataChannelHelper(d.Label(), *d.ID(), d)
}
}
func (s *Session) createMasterSession() error {
if err := s.sess.CreateOffer(); err != nil {
log.Errorln(err)
return err
}
if err := s.sess.ReadSDP(); err != nil {
log.Errorln(err)
return err
}
return nil
}
func (s *Session) createSlaveSession() error {
if err := s.sess.ReadSDP(); err != nil {
log.Errorln(err)
return err
}
if err := s.sess.CreateAnswer(); err != nil {
log.Errorln(err)
return err
}
return nil
}