From 67df8f8cdb84f75791be0a9424f6e493d3a3f9ab Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 11 Apr 2022 14:53:02 +1000 Subject: [PATCH] Fix webrtc logging for JS build --- .github/workflows/go.yml | 2 +- webtorrent/setting-engine.go | 24 ++++++++++++++++++++++++ webtorrent/setting-engine_js.go | 13 +++++++++++++ webtorrent/transport.go | 11 ----------- 4 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 webtorrent/setting-engine.go create mode 100644 webtorrent/setting-engine_js.go diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index af1530ff..4b12c907 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -60,7 +60,7 @@ jobs: - uses: actions/checkout@v2 - uses: ./.github/actions/go-common - name: Some packages compile for WebAssembly - run: GOOS=js GOARCH=wasm go build -v . ./storage ./tracker/... + run: GOOS=js GOARCH=wasm go build . ./storage ./tracker/... torrentfs: runs-on: ubuntu-latest diff --git a/webtorrent/setting-engine.go b/webtorrent/setting-engine.go new file mode 100644 index 00000000..a84ee020 --- /dev/null +++ b/webtorrent/setting-engine.go @@ -0,0 +1,24 @@ +// These build constraints are copied from webrtc's settingengine.go. +//go:build !js +// +build !js + +package webtorrent + +import ( + "io" + + "github.com/pion/logging" + "github.com/pion/webrtc/v3" +) + +var s = webrtc.SettingEngine{ + // This could probably be done with better integration into anacrolix/log, but I'm not sure if + // it's worth the effort. + LoggerFactory: discardLoggerFactory{}, +} + +type discardLoggerFactory struct{} + +func (discardLoggerFactory) NewLogger(scope string) logging.LeveledLogger { + return logging.NewDefaultLeveledLoggerForScope(scope, logging.LogLevelInfo, io.Discard) +} diff --git a/webtorrent/setting-engine_js.go b/webtorrent/setting-engine_js.go new file mode 100644 index 00000000..ea42d11a --- /dev/null +++ b/webtorrent/setting-engine_js.go @@ -0,0 +1,13 @@ +// These build constraints are copied from webrtc's settingengine_js.go. +//go:build js && wasm +// +build js,wasm + +package webtorrent + +import ( + "github.com/pion/webrtc/v3" +) + +// I'm not sure what to do for logging for JS. See +// https://gophers.slack.com/archives/CAK2124AG/p1649651943947579. +var s = webrtc.SettingEngine{} diff --git a/webtorrent/transport.go b/webtorrent/transport.go index 511ab595..e4c3b73d 100644 --- a/webtorrent/transport.go +++ b/webtorrent/transport.go @@ -8,24 +8,13 @@ import ( "github.com/anacrolix/missinggo/v2/pproffd" "github.com/pion/datachannel" - "github.com/pion/logging" - "github.com/pion/webrtc/v3" ) -type DiscardLoggerFactory struct{} - -func (f *DiscardLoggerFactory) NewLogger(scope string) logging.LeveledLogger { - return logging.NewDefaultLeveledLoggerForScope(scope, logging.LogLevelInfo, io.Discard) -} - var ( metrics = expvar.NewMap("webtorrent") api = func() *webrtc.API { // Enable the detach API (since it's non-standard but more idiomatic). - s := webrtc.SettingEngine{ - LoggerFactory: &DiscardLoggerFactory{}, - } s.DetachDataChannels() return webrtc.NewAPI(webrtc.WithSettingEngine(s)) }() -- 2.44.0