mirror of
https://github.com/livekit/livekit.git
synced 2026-03-30 17:45:40 +00:00
* Initial plumbing for metrics.
This implements
- metrics received from participant.
- callback to room.
- room distributes it to all other participants (excluding the sending
participant).
- other participants forward to client.
- counting metrics bytes in data channel stats
TODO:
- recording/processing/batching
- should recording/processing/batching happen on publisher side or
subscriber side?
- should metrics be echoed back to publisher?
- grants to publish/subscribe metrics.
* mage generate
* clear OnMetrics on close
* - CanSubscribeMetrics permission.
- Echo back to sender.
* update deps
* No destination identities for metrics
* WIP
* use normalized timestamp for server injected timestamps
* compile
* debug log metrics batch
* correct comment
* add baseTime to wire
* protocol dep
* Scope metrics forwarding to only participants that a participant is
subscribed to.
Also remove the participant_metrics.go file as it was not doing anything
useful.
* update comment
* utils.ErrorIsOneOf
* couple of more utils.CloneProto
48 lines
2.3 KiB
Go
48 lines
2.3 KiB
Go
// Copyright 2023 LiveKit, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package rtc
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
var (
|
|
ErrRoomClosed = errors.New("room has already closed")
|
|
ErrPermissionDenied = errors.New("no permissions to access the room")
|
|
ErrMaxParticipantsExceeded = errors.New("room has exceeded its max participants")
|
|
ErrLimitExceeded = errors.New("node has exceeded its configured limit")
|
|
ErrAlreadyJoined = errors.New("a participant with the same identity is already in the room")
|
|
ErrDataChannelUnavailable = errors.New("data channel is not available")
|
|
ErrDataChannelBufferFull = errors.New("data channel buffer is full")
|
|
ErrTransportFailure = errors.New("transport failure")
|
|
ErrEmptyIdentity = errors.New("participant identity cannot be empty")
|
|
ErrEmptyParticipantID = errors.New("participant ID cannot be empty")
|
|
ErrMissingGrants = errors.New("VideoGrant is missing")
|
|
ErrInternalError = errors.New("internal error")
|
|
ErrNameExceedsLimits = errors.New("name length exceeds limits")
|
|
ErrMetadataExceedsLimits = errors.New("metadata size exceeds limits")
|
|
ErrAttributesExceedsLimits = errors.New("attributes size exceeds limits")
|
|
|
|
// Track subscription related
|
|
ErrNoTrackPermission = errors.New("participant is not allowed to subscribe to this track")
|
|
ErrNoSubscribePermission = errors.New("participant is not given permission to subscribe to tracks")
|
|
ErrTrackNotFound = errors.New("track cannot be found")
|
|
ErrTrackNotAttached = errors.New("track is not yet attached")
|
|
ErrTrackNotBound = errors.New("track not bound")
|
|
ErrSubscriptionLimitExceeded = errors.New("participant has exceeded its subscription limit")
|
|
|
|
ErrNoSubscribeMetricsPermission = errors.New("participant is not given permission to subscribe to metrics")
|
|
)
|