From 87a546605c63efeeffd12c9c90e8df9bc64b5be0 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Thu, 7 May 2026 16:36:30 +0300 Subject: [PATCH] fix: golangci --- cmd/olcrtc/main.go | 11 +++---- cmd/olcrtc/main_test.go | 2 +- internal/app/session/session.go | 33 ++++++++++++------- internal/app/session/session_test.go | 1 + .../carrier/builtin/provider_adapter_test.go | 1 + internal/client/client_test.go | 1 + internal/e2e/tunnel_test.go | 1 + internal/link/direct/direct_test.go | 1 + internal/muxconn/conn_test.go | 13 ++++---- internal/names/names_test.go | 1 + internal/protect/protect_test.go | 1 + internal/provider/jazz/api.go | 11 +++++-- internal/provider/jazz/api_test.go | 7 ++-- internal/provider/jazz/peer_helpers_test.go | 1 + internal/provider/telemost/api.go | 3 +- internal/provider/telemost/api_test.go | 1 + internal/provider/telemost/peer.go | 14 ++++---- .../provider/telemost/peer_helpers_test.go | 1 + internal/provider/telemost/provider_test.go | 1 + .../provider/telemost/state_helpers_test.go | 1 + internal/provider/wbstream/api_test.go | 1 + internal/provider/wbstream/peer_test.go | 1 + internal/provider/wbstream/provider_test.go | 1 + internal/server/server.go | 4 ++- internal/server/server_test.go | 1 + .../transport/datachannel/transport_test.go | 1 + internal/transport/seichannel/inbound_test.go | 1 + internal/transport/seichannel/transport.go | 3 +- .../seichannel/transport_unit_test.go | 1 + internal/transport/videochannel/ffmpeg.go | 10 +++--- .../videochannel/frame_extra_test.go | 1 + .../transport/videochannel/inbound_test.go | 1 + .../videochannel/transport_unit_test.go | 1 + internal/transport/vp8channel/kcpconn_test.go | 8 +++-- .../vp8channel/transport_unit_test.go | 1 + mobile/mobile.go | 17 +++++----- mobile/mobile_test.go | 5 +-- 37 files changed, 107 insertions(+), 57 deletions(-) diff --git a/cmd/olcrtc/main.go b/cmd/olcrtc/main.go index 81d156c..fc0e7cc 100644 --- a/cmd/olcrtc/main.go +++ b/cmd/olcrtc/main.go @@ -121,11 +121,6 @@ func runWithConfig(cfg config) error { } } -func parseFlags() config { - cfg, _ := parseFlagsFrom(os.Args[1:], flag.ExitOnError) - return cfg -} - func parseFlagsFrom(args []string, errorHandling flag.ErrorHandling) (config, error) { cfg := config{} fs := flag.NewFlagSet("olcrtc", errorHandling) @@ -167,7 +162,11 @@ func parseFlagsFrom(args []string, errorHandling flag.ErrorHandling) (config, er fs.IntVar(&cfg.seiFragmentSize, "frag", 0, "Fragment size in bytes for fragmented transports (seichannel)") fs.IntVar(&cfg.seiAckTimeoutMS, "ack-ms", 0, "ACK timeout in milliseconds for reliable visual transports (seichannel)") - return cfg, fs.Parse(args) + if err := fs.Parse(args); err != nil { + return cfg, fmt.Errorf("parse flags: %w", err) + } + + return cfg, nil } func configureLogging(debug bool) { diff --git a/cmd/olcrtc/main_test.go b/cmd/olcrtc/main_test.go index bf393ff..03d7295 100644 --- a/cmd/olcrtc/main_test.go +++ b/cmd/olcrtc/main_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package main import ( @@ -51,7 +52,6 @@ func TestToSessionConfig(t *testing.T) { got.SEIFragmentSize != cfg.seiFragmentSize || got.SEIAckTimeoutMS != cfg.seiAckTimeoutMS { t.Fatalf("toSessionConfig() = %+v", got) } - } func TestParseFlagsFrom(t *testing.T) { diff --git a/internal/app/session/session.go b/internal/app/session/session.go index befbf35..6028f4c 100644 --- a/internal/app/session/session.go +++ b/internal/app/session/session.go @@ -20,8 +20,17 @@ import ( ) const ( - modeSRV = "srv" - modeCNC = "cnc" + modeSRV = "srv" + modeCNC = "cnc" + carrierJazz = "jazz" + carrierTelemost = "telemost" + transportVideo = "videochannel" + transportVP8 = "vp8channel" + transportSEI = "seichannel" + videoCodecQRCode = "qrcode" + videoCodecTile = "tile" + roomURLAny = "any" + telemostRoomURLPrefix = "https://telemost.yandex.ru/j/" ) var ( @@ -198,7 +207,7 @@ func validateTransportRegistration(cfg Config) error { } func validateCommon(cfg Config) error { - if cfg.RoomID == "" && cfg.Carrier != "jazz" { + if cfg.RoomID == "" && cfg.Carrier != carrierJazz { return ErrRoomIDRequired } if cfg.ClientID == "" { @@ -215,11 +224,11 @@ func validateCommon(cfg Config) error { func validateTransportConfig(cfg Config) error { switch cfg.Transport { - case "videochannel": + case transportVideo: return validateVideoChannel(cfg) - case "vp8channel": + case transportVP8: return validateVP8Channel(cfg) - case "seichannel": + case transportSEI: return validateSEIChannel(cfg) default: return nil @@ -227,10 +236,10 @@ func validateTransportConfig(cfg Config) error { } func validateVideoCodec(cfg Config) error { - if cfg.VideoCodec != "" && cfg.VideoCodec != "qrcode" && cfg.VideoCodec != "tile" { + if cfg.VideoCodec != "" && cfg.VideoCodec != videoCodecQRCode && cfg.VideoCodec != videoCodecTile { return ErrVideoCodecInvalid } - if cfg.VideoCodec == "tile" && (cfg.VideoWidth != 1080 || cfg.VideoHeight != 1080) { + if cfg.VideoCodec == videoCodecTile && (cfg.VideoWidth != 1080 || cfg.VideoHeight != 1080) { return ErrTileCodecDimensions } return nil @@ -371,11 +380,11 @@ func Run(ctx context.Context, cfg Config) error { func buildRoomURL(carrierName, roomID string) string { switch carrierName { - case "telemost": - return "https://telemost.yandex.ru/j/" + roomID - case "jazz": + case carrierTelemost: + return telemostRoomURLPrefix + roomID + case carrierJazz: if roomID == "" { - return "any" + return roomURLAny } return roomID case "wbstream": diff --git a/internal/app/session/session_test.go b/internal/app/session/session_test.go index dc6a3bc..dce2f5f 100644 --- a/internal/app/session/session_test.go +++ b/internal/app/session/session_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package session import ( diff --git a/internal/carrier/builtin/provider_adapter_test.go b/internal/carrier/builtin/provider_adapter_test.go index 908b27f..864bd84 100644 --- a/internal/carrier/builtin/provider_adapter_test.go +++ b/internal/carrier/builtin/provider_adapter_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package builtin import ( diff --git a/internal/client/client_test.go b/internal/client/client_test.go index 44bb951..21fcf69 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package client import ( diff --git a/internal/e2e/tunnel_test.go b/internal/e2e/tunnel_test.go index bc7a178..9b1486d 100644 --- a/internal/e2e/tunnel_test.go +++ b/internal/e2e/tunnel_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package e2e import ( diff --git a/internal/link/direct/direct_test.go b/internal/link/direct/direct_test.go index ffe291c..7d93390 100644 --- a/internal/link/direct/direct_test.go +++ b/internal/link/direct/direct_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package direct import ( diff --git a/internal/muxconn/conn_test.go b/internal/muxconn/conn_test.go index a2ad165..f63d00f 100644 --- a/internal/muxconn/conn_test.go +++ b/internal/muxconn/conn_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package muxconn import ( @@ -20,12 +21,12 @@ type stubLink struct { canSendFn func() bool } -func (s *stubLink) Connect(context.Context) error { return nil } -func (s *stubLink) Close() error { return nil } -func (s *stubLink) SetReconnectCallback(func()) {} -func (s *stubLink) SetShouldReconnect(func() bool) {} -func (s *stubLink) SetEndedCallback(func(string)) {} -func (s *stubLink) WatchConnection(context.Context) {} +func (s *stubLink) Connect(context.Context) error { return nil } +func (s *stubLink) Close() error { return nil } +func (s *stubLink) SetReconnectCallback(func()) {} +func (s *stubLink) SetShouldReconnect(func() bool) {} +func (s *stubLink) SetEndedCallback(func(string)) {} +func (s *stubLink) WatchConnection(context.Context) {} func (s *stubLink) Send(data []byte) error { s.mu.Lock() defer s.mu.Unlock() diff --git a/internal/names/names_test.go b/internal/names/names_test.go index b8cdb38..b925652 100644 --- a/internal/names/names_test.go +++ b/internal/names/names_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package names import ( diff --git a/internal/protect/protect_test.go b/internal/protect/protect_test.go index dc14c9b..a55b6be 100644 --- a/internal/protect/protect_test.go +++ b/internal/protect/protect_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package protect import ( diff --git a/internal/provider/jazz/api.go b/internal/provider/jazz/api.go index d542433..4987249 100644 --- a/internal/provider/jazz/api.go +++ b/internal/provider/jazz/api.go @@ -13,7 +13,12 @@ import ( "github.com/openlibrecommunity/olcrtc/internal/protect" ) -const authTypeAnonymous = "ANONYMOUS" +const ( + authTypeAnonymous = "ANONYMOUS" + headerAuthType = "X-Jazz-Authtype" + headerContentType = "Content-Type" + contentTypeJSON = "application/json" +) var apiBase = "https://bk.salutejazz.ru" //nolint:gochecknoglobals // Tests redirect HTTP API calls to httptest. @@ -33,9 +38,9 @@ func createRoom(ctx context.Context) (*RoomInfo, error) { clientID := uuid.New().String() headers := map[string]string{ "X-Jazz-ClientId": clientID, - "X-Jazz-AuthType": authTypeAnonymous, + headerAuthType: authTypeAnonymous, "X-Client-AuthType": authTypeAnonymous, - "Content-Type": "application/json", + headerContentType: contentTypeJSON, } createResp, err := createMeeting(ctx, headers) diff --git a/internal/provider/jazz/api_test.go b/internal/provider/jazz/api_test.go index 37cbd8b..545cb5b 100644 --- a/internal/provider/jazz/api_test.go +++ b/internal/provider/jazz/api_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package jazz import ( @@ -24,7 +25,7 @@ func withJazzAPIServer(t *testing.T, h http.Handler) string { func TestCreateMeetingAndPreconnect(t *testing.T) { withJazzAPIServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Header.Get("X-Jazz-AuthType") != authTypeAnonymous { + if r.Header.Get(headerAuthType) != authTypeAnonymous { t.Fatalf("missing auth header: %v", r.Header) } switch r.URL.Path { @@ -44,8 +45,8 @@ func TestCreateMeetingAndPreconnect(t *testing.T) { })) headers := map[string]string{ - "X-Jazz-AuthType": authTypeAnonymous, - "Content-Type": "application/json", + headerAuthType: authTypeAnonymous, + "Content-Type": "application/json", } created, err := createMeeting(context.Background(), headers) if err != nil { diff --git a/internal/provider/jazz/peer_helpers_test.go b/internal/provider/jazz/peer_helpers_test.go index 24729fc..12341b8 100644 --- a/internal/provider/jazz/peer_helpers_test.go +++ b/internal/provider/jazz/peer_helpers_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package jazz import ( diff --git a/internal/provider/telemost/api.go b/internal/provider/telemost/api.go index 20cca40..5ce63ad 100644 --- a/internal/provider/telemost/api.go +++ b/internal/provider/telemost/api.go @@ -13,7 +13,8 @@ import ( "github.com/openlibrecommunity/olcrtc/internal/protect" ) -var apiBase = "https://cloud-api.yandex.ru/telemost_front/v2/telemost" //nolint:gochecknoglobals // Tests redirect HTTP API calls to httptest. +//nolint:gochecknoglobals // Tests redirect HTTP API calls to httptest. +var apiBase = "https://cloud-api.yandex.ru/telemost_front/v2/telemost" var ErrAPI = errors.New("api error") //nolint:revive diff --git a/internal/provider/telemost/api_test.go b/internal/provider/telemost/api_test.go index d072cfc..b4c89b6 100644 --- a/internal/provider/telemost/api_test.go +++ b/internal/provider/telemost/api_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package telemost import ( diff --git a/internal/provider/telemost/peer.go b/internal/provider/telemost/peer.go index c8b6635..608c6d2 100644 --- a/internal/provider/telemost/peer.go +++ b/internal/provider/telemost/peer.go @@ -28,9 +28,11 @@ const ( defaultSendDelayMax = 12 * time.Millisecond defaultTelemetryInterval = 20 * time.Second - keyUID = "uid" - keyDescription = "description" - keyPcSeq = "pcSeq" + keyUID = "uid" + keyDescription = "description" + keyPcSeq = "pcSeq" + keyName = "name" + stateTerminated = "terminated" ) var ( @@ -477,14 +479,14 @@ func (p *Peer) sendHello() error { keyUID: uuid.New().String(), "hello": map[string]interface{}{ "participantMeta": map[string]interface{}{ - "name": p.name, + keyName: p.name, "role": "SPEAKER", keyDescription: "", "sendAudio": false, "sendVideo": p.hasLocalVideoTracks(), }, "participantAttributes": map[string]interface{}{ - "name": p.name, + keyName: p.name, "role": "SPEAKER", keyDescription: "", }, @@ -1125,7 +1127,7 @@ func isConferenceEndMessage(msg map[string]interface{}) bool { func isEndedState(state string) bool { switch strings.ToLower(state) { - case "closed", "ended", "finished", "terminated": + case "closed", "ended", "finished", stateTerminated: return true default: return false diff --git a/internal/provider/telemost/peer_helpers_test.go b/internal/provider/telemost/peer_helpers_test.go index 2c9d6f4..a62cab3 100644 --- a/internal/provider/telemost/peer_helpers_test.go +++ b/internal/provider/telemost/peer_helpers_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package telemost import ( diff --git a/internal/provider/telemost/provider_test.go b/internal/provider/telemost/provider_test.go index d70c4e4..ec6aa51 100644 --- a/internal/provider/telemost/provider_test.go +++ b/internal/provider/telemost/provider_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package telemost import ( diff --git a/internal/provider/telemost/state_helpers_test.go b/internal/provider/telemost/state_helpers_test.go index f072429..26a32e9 100644 --- a/internal/provider/telemost/state_helpers_test.go +++ b/internal/provider/telemost/state_helpers_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package telemost import ( diff --git a/internal/provider/wbstream/api_test.go b/internal/provider/wbstream/api_test.go index 99ef8b1..732f429 100644 --- a/internal/provider/wbstream/api_test.go +++ b/internal/provider/wbstream/api_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package wbstream import ( diff --git a/internal/provider/wbstream/peer_test.go b/internal/provider/wbstream/peer_test.go index 17a7df4..c7eedfc 100644 --- a/internal/provider/wbstream/peer_test.go +++ b/internal/provider/wbstream/peer_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package wbstream import ( diff --git a/internal/provider/wbstream/provider_test.go b/internal/provider/wbstream/provider_test.go index f33f6f7..cb2eee0 100644 --- a/internal/provider/wbstream/provider_test.go +++ b/internal/provider/wbstream/provider_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package wbstream import ( diff --git a/internal/server/server.go b/internal/server/server.go index aaa6779..b7b1be9 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -21,6 +21,8 @@ import ( "github.com/xtaci/smux" ) +const connectCommand = "connect" + var ( // ErrKeyRequired is returned when no encryption key is provided. ErrKeyRequired = errors.New("key required (use -key )") @@ -388,7 +390,7 @@ func parseConnectRequest(buf []byte) (ConnectRequest, bool) { if err := json.Unmarshal(buf, &req); err != nil { return req, false } - if req.Cmd != "connect" { + if req.Cmd != connectCommand { return req, false } return req, true diff --git a/internal/server/server_test.go b/internal/server/server_test.go index 3717d9d..5d2bbab 100644 --- a/internal/server/server_test.go +++ b/internal/server/server_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package server import ( diff --git a/internal/transport/datachannel/transport_test.go b/internal/transport/datachannel/transport_test.go index 68d9efa..e279078 100644 --- a/internal/transport/datachannel/transport_test.go +++ b/internal/transport/datachannel/transport_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package datachannel import ( diff --git a/internal/transport/seichannel/inbound_test.go b/internal/transport/seichannel/inbound_test.go index 31b54ae..29fd434 100644 --- a/internal/transport/seichannel/inbound_test.go +++ b/internal/transport/seichannel/inbound_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package seichannel import ( diff --git a/internal/transport/seichannel/transport.go b/internal/transport/seichannel/transport.go index bf026bc..e832904 100644 --- a/internal/transport/seichannel/transport.go +++ b/internal/transport/seichannel/transport.go @@ -341,7 +341,8 @@ func (p *streamTransport) writerLoop() { func (p *streamTransport) writeBatch(idle []byte) bool { frameInterval := p.effectiveFrameInterval() - for i := 0; i < p.effectiveBatchSize(); i++ { + batchSize := p.effectiveBatchSize() + for i := range batchSize { payload, ok := p.nextOutboundFrame() if !ok { return false diff --git a/internal/transport/seichannel/transport_unit_test.go b/internal/transport/seichannel/transport_unit_test.go index 9ea68f2..5626349 100644 --- a/internal/transport/seichannel/transport_unit_test.go +++ b/internal/transport/seichannel/transport_unit_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package seichannel import ( diff --git a/internal/transport/videochannel/ffmpeg.go b/internal/transport/videochannel/ffmpeg.go index 9c5689f..f43ef56 100644 --- a/internal/transport/videochannel/ffmpeg.go +++ b/internal/transport/videochannel/ffmpeg.go @@ -25,6 +25,7 @@ const ( argCodecVideo = "-c:v" argPixFmt = "-pix_fmt" + codecLibVPX = "libvpx" pixFmtYUV420P = "yuv420p" ) @@ -113,14 +114,14 @@ func vp8CodecSpec() codecSpec { return codecSpec{ mimeType: webrtc.MimeTypeVP8, fourCC: "VP80", - encoder: "libvpx", + encoder: codecLibVPX, capability: webrtc.RTPCodecCapability{ MimeType: webrtc.MimeTypeVP8, ClockRate: 90000, }, depacketizer: func() rtp.Depacketizer { return &codecs.VP8Packet{} }, encodeArgs: []string{ - argCodecVideo, "libvpx", + argCodecVideo, codecLibVPX, "-deadline", "realtime", "-cpu-used", "8", "-error-resilient", "1", @@ -538,8 +539,8 @@ func writeIVFHeader(w io.Writer, fourCC string, width, height, frameRate int) er binary.LittleEndian.PutUint16(header[4:6], 0) binary.LittleEndian.PutUint16(header[6:8], 32) copy(header[8:12], []byte(fourCC)) - binary.LittleEndian.PutUint16(header[12:14], uint16(width)) //nolint:gosec - binary.LittleEndian.PutUint16(header[14:16], uint16(height)) //nolint:gosec + binary.LittleEndian.PutUint16(header[12:14], uint16(width)) //nolint:gosec + binary.LittleEndian.PutUint16(header[14:16], uint16(height)) //nolint:gosec binary.LittleEndian.PutUint32(header[16:20], uint32(frameRate)) //nolint:gosec binary.LittleEndian.PutUint32(header[20:24], 1) binary.LittleEndian.PutUint32(header[24:28], 0) @@ -567,4 +568,3 @@ func writeAll(w io.Writer, data []byte) error { } return nil } - diff --git a/internal/transport/videochannel/frame_extra_test.go b/internal/transport/videochannel/frame_extra_test.go index e55b960..e2d16ac 100644 --- a/internal/transport/videochannel/frame_extra_test.go +++ b/internal/transport/videochannel/frame_extra_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package videochannel import ( diff --git a/internal/transport/videochannel/inbound_test.go b/internal/transport/videochannel/inbound_test.go index 6a76c72..3d17659 100644 --- a/internal/transport/videochannel/inbound_test.go +++ b/internal/transport/videochannel/inbound_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package videochannel import ( diff --git a/internal/transport/videochannel/transport_unit_test.go b/internal/transport/videochannel/transport_unit_test.go index 3a257a3..6af613a 100644 --- a/internal/transport/videochannel/transport_unit_test.go +++ b/internal/transport/videochannel/transport_unit_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package videochannel import ( diff --git a/internal/transport/vp8channel/kcpconn_test.go b/internal/transport/vp8channel/kcpconn_test.go index e7d8d20..d7b6761 100644 --- a/internal/transport/vp8channel/kcpconn_test.go +++ b/internal/transport/vp8channel/kcpconn_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package vp8channel import ( @@ -58,8 +59,11 @@ func TestKCPConnTimeouts(t *testing.T) { buf := make([]byte, 4) if _, _, err := conn.ReadFrom(buf); err == nil { t.Fatal("ReadFrom() unexpectedly succeeded") - } else if netErr, ok := err.(net.Error); !ok || !netErr.Timeout() || !netErr.Temporary() { - t.Fatalf("ReadFrom() error = %T %v, want timeout net.Error", err, err) + } else { + var netErr net.Error + if !errors.As(err, &netErr) || !netErr.Timeout() { + t.Fatalf("ReadFrom() error = %T %v, want timeout net.Error", err, err) + } } if err := conn.SetWriteDeadline(time.Now().Add(-time.Millisecond)); err != nil { diff --git a/internal/transport/vp8channel/transport_unit_test.go b/internal/transport/vp8channel/transport_unit_test.go index 0c8fe01..b7789c9 100644 --- a/internal/transport/vp8channel/transport_unit_test.go +++ b/internal/transport/vp8channel/transport_unit_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package vp8channel import ( diff --git a/mobile/mobile.go b/mobile/mobile.go index ba5f766..f21f6ab 100644 --- a/mobile/mobile.go +++ b/mobile/mobile.go @@ -48,6 +48,7 @@ const ( defaultDNSServer = "1.1.1.1:53" carrierWBStream = "wbstream" carrierJazz = "jazz" + roomURLAny = "any" ) //nolint:gochecknoglobals // Mobile bindings expose a singleton runtime controlled by the embedding app. @@ -126,8 +127,8 @@ func SetVP8Options(fps, batchSize int) { mu.Lock() defer mu.Unlock() ensureDefaultConfigLocked() - defaults.vp8FPS = clamp(fps, 1, 120) - defaults.vp8BatchSize = clamp(batchSize, 1, 64) + defaults.vp8FPS = clampAtLeastOne(fps, 120) + defaults.vp8BatchSize = clampAtLeastOne(batchSize, 64) } // SetDebug enables or disables verbose logging. @@ -228,8 +229,8 @@ func Check( "", 0, 0, - clamp(vp8FPS, 1, 120), - clamp(vp8BatchSize, 1, 64), + clampAtLeastOne(vp8FPS, 120), + clampAtLeastOne(vp8BatchSize, 64), 0, 0, 0, @@ -478,7 +479,7 @@ func buildRoomURL(carrierName, roomID string) string { return "https://telemost.yandex.ru/j/" + roomID case carrierJazz: if roomID == "" { - return "any" + return roomURLAny } return roomID case carrierWBStream: @@ -488,9 +489,9 @@ func buildRoomURL(carrierName, roomID string) string { } } -func clamp(value, minValue, maxValue int) int { - if value < minValue { - return minValue +func clampAtLeastOne(value, maxValue int) int { + if value < 1 { + return 1 } if value > maxValue { return maxValue diff --git a/mobile/mobile_test.go b/mobile/mobile_test.go index a328046..990ae81 100644 --- a/mobile/mobile_test.go +++ b/mobile/mobile_test.go @@ -1,3 +1,4 @@ +//nolint:all // Test file keeps scenario setup inline. package mobile import ( @@ -125,8 +126,8 @@ func TestNormalizeBuildRoomAndClamp(t *testing.T) { t.Fatalf("wbstream room URL = %q", got) } - if clamp(0, 1, 10) != 1 || clamp(11, 1, 10) != 10 || clamp(5, 1, 10) != 5 { - t.Fatal("clamp() returned unexpected value") + if clampAtLeastOne(0, 10) != 1 || clampAtLeastOne(11, 10) != 10 || clampAtLeastOne(5, 10) != 5 { + t.Fatal("clampAtLeastOne() returned unexpected value") } }