service

package
v1.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2024 License: Apache-2.0 Imports: 66 Imported by: 5

Documentation

Index

Constants

View Source
const (
	VersionKey = "livekit_version"

	// RoomsKey is hash of room_name => Room proto
	RoomsKey        = "rooms"
	RoomInternalKey = "room_internal"

	// EgressKey is a hash of egressID => egress info
	EgressKey        = "egress"
	EndedEgressKey   = "ended_egress"
	RoomEgressPrefix = "egress:room:"

	// IngressKey is a hash of ingressID => ingress info
	IngressKey         = "ingress"
	StreamKeyKey       = "{ingress}_stream_key"
	IngressStatePrefix = "{ingress}_state:"
	RoomIngressPrefix  = "room_{ingress}:"

	SIPTrunkKey        = "sip_trunk"
	SIPDispatchRuleKey = "sip_dispatch_rule"

	// RoomParticipantsPrefix is hash of participant_name => ParticipantInfo
	RoomParticipantsPrefix = "room_participants:"

	// RoomLockPrefix is a simple key containing a provided lock uid
	RoomLockPrefix = "room_lock:"
)
View Source
const AgentServiceVersion = "0.1.0"
View Source
const (
	LivekitRealm = "livekit"
)

Variables

View Source
var (
	ErrPermissionDenied          = errors.New("permissions denied")
	ErrMissingAuthorization      = errors.New("invalid authorization header. Must start with " + bearerPrefix)
	ErrInvalidAuthorizationToken = errors.New("invalid authorization token")
	ErrInvalidAPIKey             = errors.New("invalid API key")
)
View Source
var (
	ErrEgressNotFound          = psrpc.NewErrorf(psrpc.NotFound, "egress does not exist")
	ErrEgressNotConnected      = psrpc.NewErrorf(psrpc.Internal, "egress not connected (redis required)")
	ErrIdentityEmpty           = psrpc.NewErrorf(psrpc.InvalidArgument, "identity cannot be empty")
	ErrIngressNotConnected     = psrpc.NewErrorf(psrpc.Internal, "ingress not connected (redis required)")
	ErrIngressNotFound         = psrpc.NewErrorf(psrpc.NotFound, "ingress does not exist")
	ErrIngressNonReusable      = psrpc.NewErrorf(psrpc.InvalidArgument, "ingress is not reusable and cannot be modified")
	ErrMetadataExceedsLimits   = psrpc.NewErrorf(psrpc.InvalidArgument, "metadata size exceeds limits")
	ErrOperationFailed         = psrpc.NewErrorf(psrpc.Internal, "operation cannot be completed")
	ErrParticipantNotFound     = psrpc.NewErrorf(psrpc.NotFound, "participant does not exist")
	ErrRoomNotFound            = psrpc.NewErrorf(psrpc.NotFound, "requested room does not exist")
	ErrRoomLockFailed          = psrpc.NewErrorf(psrpc.Internal, "could not lock room")
	ErrRoomUnlockFailed        = psrpc.NewErrorf(psrpc.Internal, "could not unlock room, lock token does not match")
	ErrRemoteUnmuteNoteEnabled = psrpc.NewErrorf(psrpc.FailedPrecondition, "remote unmute not enabled")
	ErrTrackNotFound           = psrpc.NewErrorf(psrpc.NotFound, "track is not found")
	ErrWebHookMissingAPIKey    = psrpc.NewErrorf(psrpc.InvalidArgument, "api_key is required to use webhooks")
	ErrSIPNotConnected         = psrpc.NewErrorf(psrpc.Internal, "sip not connected (redis required)")
	ErrSIPTrunkNotFound        = psrpc.NewErrorf(psrpc.NotFound, "requested sip trunk does not exist")
	ErrSIPDispatchRuleNotFound = psrpc.NewErrorf(psrpc.NotFound, "requested sip dispatch rule does not exist")
	ErrSIPParticipantNotFound  = psrpc.NewErrorf(psrpc.NotFound, "requested sip participant does not exist")
)

Functions

func AppendLogFields added in v1.3.2

func AppendLogFields(ctx context.Context, fields ...interface{})

func EnsureAdminPermission

func EnsureAdminPermission(ctx context.Context, room livekit.RoomName) error

func EnsureCreatePermission

func EnsureCreatePermission(ctx context.Context) error

func EnsureIngressAdminPermission added in v1.3.0

func EnsureIngressAdminPermission(ctx context.Context) error

func EnsureJoinPermission

func EnsureJoinPermission(ctx context.Context) (name livekit.RoomName, err error)

func EnsureListPermission

func EnsureListPermission(ctx context.Context) error

func EnsureRecordPermission added in v0.12.1

func EnsureRecordPermission(ctx context.Context) error

func GetClientIP added in v1.4.1

func GetClientIP(r *http.Request) string

func GetGrants

func GetGrants(ctx context.Context) *auth.ClaimGrants

func InitializeRouter added in v0.12.2

func InitializeRouter(conf *config.Config, currentNode routing.LocalNode) (routing.Router, error)

func IsValidDomain added in v0.12.2

func IsValidDomain(domain string) bool

func NewEgressLauncher added in v1.2.2

func NewEgressLauncher(client rpc.EgressClient, io IOClient) rtc.EgressLauncher

func NewTurnServer

func NewTurnServer(conf *config.Config, authHandler turn.AuthHandler, standalone bool) (*turn.Server, error)

func SetAuthorizationToken

func SetAuthorizationToken(r *http.Request, token string)

func TwirpLogger added in v1.2.5

func TwirpLogger() *twirp.ServerHooks

logging handling inspired by https://github.com/bakins/twirpzap License: Apache-2.0

func TwirpRequestStatusReporter added in v1.3.4

func TwirpRequestStatusReporter() *twirp.ServerHooks

func WithGrants added in v0.15.5

func WithGrants(ctx context.Context, grants *auth.ClaimGrants) context.Context

Types

type APIKeyAuthMiddleware

type APIKeyAuthMiddleware struct {
	// contains filtered or unexported fields
}

authentication middleware

func NewAPIKeyAuthMiddleware

func NewAPIKeyAuthMiddleware(provider auth.KeyProvider) *APIKeyAuthMiddleware

func (*APIKeyAuthMiddleware) ServeHTTP

type AgentHandler added in v1.5.1

type AgentHandler struct {
	// contains filtered or unexported fields
}

func NewAgentHandler added in v1.5.1

func NewAgentHandler(agentServer rpc.AgentInternalServer, roomTopic, publisherTopic string) *AgentHandler

func (*AgentHandler) CheckEnabled added in v1.5.1

func (*AgentHandler) DrainConnections added in v1.5.1

func (s *AgentHandler) DrainConnections(interval time.Duration)

func (*AgentHandler) HandleConnection added in v1.5.1

func (s *AgentHandler) HandleConnection(ctx context.Context, conn *websocket.Conn)

func (*AgentHandler) JobRequest added in v1.5.1

func (s *AgentHandler) JobRequest(ctx context.Context, job *livekit.Job) (*emptypb.Empty, error)

func (*AgentHandler) JobRequestAffinity added in v1.5.1

func (s *AgentHandler) JobRequestAffinity(ctx context.Context, job *livekit.Job) float32

func (*AgentHandler) NumConnections added in v1.5.1

func (s *AgentHandler) NumConnections() int

func (*AgentHandler) OnWorkerRegistered added in v1.5.2

func (s *AgentHandler) OnWorkerRegistered(handler func(handler *AgentHandler))

OnWorkerRegistered registers a callback to be called when the first worker of each type is registered

type AgentService added in v1.5.1

type AgentService struct {
	*AgentHandler
	// contains filtered or unexported fields
}

func NewAgentService added in v1.5.1

func NewAgentService(bus psrpc.MessageBus) (*AgentService, error)

func (*AgentService) ServeHTTP added in v1.5.1

func (s *AgentService) ServeHTTP(writer http.ResponseWriter, r *http.Request)

type EgressService added in v0.15.5

type EgressService struct {
	// contains filtered or unexported fields
}

func NewEgressService added in v0.15.5

func NewEgressService(
	client rpc.EgressClient,
	launcher rtc.EgressLauncher,
	store ServiceStore,
	io IOClient,
	rs livekit.RoomService,
) *EgressService

func (*EgressService) ListEgress added in v0.15.5

func (*EgressService) StartParticipantEgress added in v1.5.0

func (s *EgressService) StartParticipantEgress(ctx context.Context, req *livekit.ParticipantEgressRequest) (*livekit.EgressInfo, error)

func (*EgressService) StartRoomCompositeEgress added in v0.15.7

func (s *EgressService) StartRoomCompositeEgress(ctx context.Context, req *livekit.RoomCompositeEgressRequest) (*livekit.EgressInfo, error)

func (*EgressService) StartTrackCompositeEgress added in v0.15.5

func (s *EgressService) StartTrackCompositeEgress(ctx context.Context, req *livekit.TrackCompositeEgressRequest) (*livekit.EgressInfo, error)

func (*EgressService) StartTrackEgress added in v0.15.5

func (s *EgressService) StartTrackEgress(ctx context.Context, req *livekit.TrackEgressRequest) (*livekit.EgressInfo, error)

func (*EgressService) StartWebEgress added in v1.3.0

func (s *EgressService) StartWebEgress(ctx context.Context, req *livekit.WebEgressRequest) (*livekit.EgressInfo, error)

func (*EgressService) StopEgress added in v0.15.5

func (*EgressService) UpdateLayout added in v0.15.5

func (*EgressService) UpdateStream added in v0.15.5

type EgressStore added in v0.15.5

type EgressStore interface {
	StoreEgress(ctx context.Context, info *livekit.EgressInfo) error
	LoadEgress(ctx context.Context, egressID string) (*livekit.EgressInfo, error)
	ListEgress(ctx context.Context, roomName livekit.RoomName, active bool) ([]*livekit.EgressInfo, error)
	UpdateEgress(ctx context.Context, info *livekit.EgressInfo) error
}

type IOClient added in v1.5.1

type IOClient interface {
	CreateEgress(ctx context.Context, info *livekit.EgressInfo) (*emptypb.Empty, error)
	GetEgress(ctx context.Context, req *rpc.GetEgressRequest) (*livekit.EgressInfo, error)
	ListEgress(ctx context.Context, req *livekit.ListEgressRequest) (*livekit.ListEgressResponse, error)
	CreateIngress(ctx context.Context, req *livekit.IngressInfo) (*emptypb.Empty, error)
	UpdateIngressState(ctx context.Context, req *rpc.UpdateIngressStateRequest) (*emptypb.Empty, error)
}

type IOInfoService added in v1.3.4

type IOInfoService struct {
	// contains filtered or unexported fields
}

func NewIOInfoService added in v1.3.4

func NewIOInfoService(
	bus psrpc.MessageBus,
	es EgressStore,
	is IngressStore,
	ss SIPStore,
	ts telemetry.TelemetryService,
) (*IOInfoService, error)

func (*IOInfoService) CreateEgress added in v1.5.1

func (s *IOInfoService) CreateEgress(ctx context.Context, info *livekit.EgressInfo) (*emptypb.Empty, error)

func (*IOInfoService) CreateIngress added in v1.5.3

func (s *IOInfoService) CreateIngress(ctx context.Context, info *livekit.IngressInfo) (*emptypb.Empty, error)

func (*IOInfoService) EvaluateSIPDispatchRules added in v1.5.2

func (*IOInfoService) GetEgress added in v1.5.1

func (*IOInfoService) GetIngressInfo added in v1.3.4

func (*IOInfoService) GetSIPTrunkAuthentication added in v1.5.2

func (*IOInfoService) ListEgress added in v1.5.1

func (*IOInfoService) Start added in v1.3.4

func (s *IOInfoService) Start() error

func (*IOInfoService) Stop added in v1.3.4

func (s *IOInfoService) Stop()

func (*IOInfoService) UpdateEgress added in v1.5.1

func (s *IOInfoService) UpdateEgress(ctx context.Context, info *livekit.EgressInfo) (*emptypb.Empty, error)

func (*IOInfoService) UpdateIngressState added in v1.3.4

func (s *IOInfoService) UpdateIngressState(ctx context.Context, req *rpc.UpdateIngressStateRequest) (*emptypb.Empty, error)

func (*IOInfoService) UpdateMetrics added in v1.5.2

func (s *IOInfoService) UpdateMetrics(ctx context.Context, req *rpc.UpdateMetricsRequest) (*emptypb.Empty, error)

type IngressLauncher added in v1.4.5

type IngressLauncher interface {
	LaunchPullIngress(ctx context.Context, info *livekit.IngressInfo) (*livekit.IngressInfo, error)
}

type IngressService added in v1.2.0

type IngressService struct {
	// contains filtered or unexported fields
}

func NewIngressService added in v1.2.0

func NewIngressService(
	conf *config.IngressConfig,
	nodeID livekit.NodeID,
	bus psrpc.MessageBus,
	psrpcClient rpc.IngressClient,
	store IngressStore,
	io IOClient,
	rs livekit.RoomService,
	ts telemetry.TelemetryService,
) *IngressService

func NewIngressServiceWithIngressLauncher added in v1.4.5

func NewIngressServiceWithIngressLauncher(
	conf *config.IngressConfig,
	nodeID livekit.NodeID,
	bus psrpc.MessageBus,
	psrpcClient rpc.IngressClient,
	store IngressStore,
	io IOClient,
	rs livekit.RoomService,
	ts telemetry.TelemetryService,
	launcher IngressLauncher,
) *IngressService

func (*IngressService) CreateIngress added in v1.2.0

func (*IngressService) CreateIngressWithUrl added in v1.4.5

func (s *IngressService) CreateIngressWithUrl(ctx context.Context, urlStr string, req *livekit.CreateIngressRequest) (*livekit.IngressInfo, error)

func (*IngressService) DeleteIngress added in v1.2.0

func (*IngressService) LaunchPullIngress added in v1.4.5

func (s *IngressService) LaunchPullIngress(ctx context.Context, info *livekit.IngressInfo) (*livekit.IngressInfo, error)

func (*IngressService) ListIngress added in v1.2.0

func (*IngressService) UpdateIngress added in v1.2.0

type IngressStore added in v1.2.0

type IngressStore interface {
	StoreIngress(ctx context.Context, info *livekit.IngressInfo) error
	LoadIngress(ctx context.Context, ingressID string) (*livekit.IngressInfo, error)
	LoadIngressFromStreamKey(ctx context.Context, streamKey string) (*livekit.IngressInfo, error)
	ListIngress(ctx context.Context, roomName livekit.RoomName) ([]*livekit.IngressInfo, error)
	UpdateIngress(ctx context.Context, info *livekit.IngressInfo) error
	UpdateIngressState(ctx context.Context, ingressId string, state *livekit.IngressState) error
	DeleteIngress(ctx context.Context, info *livekit.IngressInfo) error
}

type LayoutMetadata added in v0.15.5

type LayoutMetadata struct {
	Layout string `json:"layout"`
}

type LivekitServer

type LivekitServer struct {
	// contains filtered or unexported fields
}

func InitializeServer

func InitializeServer(conf *config.Config, currentNode routing.LocalNode) (*LivekitServer, error)

func NewLivekitServer

func NewLivekitServer(conf *config.Config,
	roomService livekit.RoomService,
	egressService *EgressService,
	ingressService *IngressService,
	sipService *SIPService,
	ioService *IOInfoService,
	rtcService *RTCService,
	agentService *AgentService,
	keyProvider auth.KeyProvider,
	router routing.Router,
	roomManager *RoomManager,
	signalServer *SignalServer,
	turnServer *turn.Server,
	currentNode routing.LocalNode,
) (s *LivekitServer, err error)

func (*LivekitServer) HTTPPort added in v0.15.3

func (s *LivekitServer) HTTPPort() int

func (*LivekitServer) IsRunning

func (s *LivekitServer) IsRunning() bool

func (*LivekitServer) Node

func (s *LivekitServer) Node() *livekit.Node

func (*LivekitServer) RoomManager added in v0.9.2

func (s *LivekitServer) RoomManager() *RoomManager

func (*LivekitServer) Start

func (s *LivekitServer) Start() error

func (*LivekitServer) Stop

func (s *LivekitServer) Stop(force bool)

type LocalStore added in v0.15.5

type LocalStore struct {
	// contains filtered or unexported fields
}

encapsulates CRUD operations for room settings

func NewLocalStore added in v0.15.5

func NewLocalStore() *LocalStore

func (*LocalStore) DeleteParticipant added in v0.15.5

func (s *LocalStore) DeleteParticipant(_ context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) error

func (*LocalStore) DeleteRoom added in v0.15.5

func (s *LocalStore) DeleteRoom(ctx context.Context, roomName livekit.RoomName) error

func (*LocalStore) ListParticipants added in v0.15.5

func (s *LocalStore) ListParticipants(_ context.Context, roomName livekit.RoomName) ([]*livekit.ParticipantInfo, error)

func (*LocalStore) ListRooms added in v0.15.5

func (s *LocalStore) ListRooms(_ context.Context, roomNames []livekit.RoomName) ([]*livekit.Room, error)

func (*LocalStore) LoadParticipant added in v0.15.5

func (s *LocalStore) LoadParticipant(_ context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) (*livekit.ParticipantInfo, error)

func (*LocalStore) LoadRoom added in v0.15.5

func (s *LocalStore) LoadRoom(_ context.Context, roomName livekit.RoomName, includeInternal bool) (*livekit.Room, *livekit.RoomInternal, error)

func (*LocalStore) LockRoom added in v0.15.5

func (*LocalStore) StoreParticipant added in v0.15.5

func (s *LocalStore) StoreParticipant(_ context.Context, roomName livekit.RoomName, participant *livekit.ParticipantInfo) error

func (*LocalStore) StoreRoom added in v0.15.5

func (s *LocalStore) StoreRoom(_ context.Context, room *livekit.Room, internal *livekit.RoomInternal) error

func (*LocalStore) UnlockRoom added in v0.15.5

func (s *LocalStore) UnlockRoom(_ context.Context, _ livekit.RoomName, _ string) error

type ObjectStore added in v0.15.5

type ObjectStore interface {
	ServiceStore

	// enable locking on a specific room to prevent race
	// returns a (lock uuid, error)
	LockRoom(ctx context.Context, roomName livekit.RoomName, duration time.Duration) (string, error)
	UnlockRoom(ctx context.Context, roomName livekit.RoomName, uid string) error

	StoreRoom(ctx context.Context, room *livekit.Room, internal *livekit.RoomInternal) error

	StoreParticipant(ctx context.Context, roomName livekit.RoomName, participant *livekit.ParticipantInfo) error
	DeleteParticipant(ctx context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) error
}

encapsulates CRUD operations for room settings

type RTCService

type RTCService struct {
	// contains filtered or unexported fields
}

func NewRTCService

func NewRTCService(
	conf *config.Config,
	ra RoomAllocator,
	store ServiceStore,
	router routing.MessageRouter,
	currentNode routing.LocalNode,
	agentClient rtc.AgentClient,
	telemetry telemetry.TelemetryService,
) *RTCService

func (*RTCService) DrainConnections added in v1.4.4

func (s *RTCService) DrainConnections(interval time.Duration)

func (*RTCService) ParseClientInfo added in v0.15.4

func (s *RTCService) ParseClientInfo(r *http.Request) *livekit.ClientInfo

func (*RTCService) ServeHTTP

func (s *RTCService) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*RTCService) Validate added in v0.11.0

func (s *RTCService) Validate(w http.ResponseWriter, r *http.Request)

type RedisStore added in v0.15.5

type RedisStore struct {
	// contains filtered or unexported fields
}

func NewRedisStore added in v0.15.5

func NewRedisStore(rc redis.UniversalClient) *RedisStore

func (*RedisStore) CleanEndedEgress added in v1.2.0

func (s *RedisStore) CleanEndedEgress() error

func (*RedisStore) DeleteIngress added in v1.2.0

func (s *RedisStore) DeleteIngress(_ context.Context, info *livekit.IngressInfo) error

func (*RedisStore) DeleteParticipant added in v0.15.5

func (s *RedisStore) DeleteParticipant(_ context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) error

func (*RedisStore) DeleteRoom added in v0.15.5

func (s *RedisStore) DeleteRoom(ctx context.Context, roomName livekit.RoomName) error

func (*RedisStore) DeleteSIPDispatchRule added in v1.5.2

func (s *RedisStore) DeleteSIPDispatchRule(ctx context.Context, info *livekit.SIPDispatchRuleInfo) error

func (*RedisStore) DeleteSIPTrunk added in v1.5.2

func (s *RedisStore) DeleteSIPTrunk(ctx context.Context, info *livekit.SIPTrunkInfo) error

func (*RedisStore) ListEgress added in v0.15.5

func (s *RedisStore) ListEgress(_ context.Context, roomName livekit.RoomName, active bool) ([]*livekit.EgressInfo, error)

func (*RedisStore) ListIngress added in v1.2.0

func (s *RedisStore) ListIngress(_ context.Context, roomName livekit.RoomName) ([]*livekit.IngressInfo, error)

func (*RedisStore) ListParticipants added in v0.15.5

func (s *RedisStore) ListParticipants(_ context.Context, roomName livekit.RoomName) ([]*livekit.ParticipantInfo, error)

func (*RedisStore) ListRooms added in v0.15.5

func (s *RedisStore) ListRooms(_ context.Context, roomNames []livekit.RoomName) ([]*livekit.Room, error)

func (*RedisStore) ListSIPDispatchRule added in v1.5.2

func (s *RedisStore) ListSIPDispatchRule(ctx context.Context) (infos []*livekit.SIPDispatchRuleInfo, err error)

func (*RedisStore) ListSIPTrunk added in v1.5.2

func (s *RedisStore) ListSIPTrunk(ctx context.Context) (infos []*livekit.SIPTrunkInfo, err error)

func (*RedisStore) LoadEgress added in v0.15.5

func (s *RedisStore) LoadEgress(_ context.Context, egressID string) (*livekit.EgressInfo, error)

func (*RedisStore) LoadIngress added in v1.2.0

func (s *RedisStore) LoadIngress(_ context.Context, ingressId string) (*livekit.IngressInfo, error)

func (*RedisStore) LoadIngressFromStreamKey added in v1.2.0

func (s *RedisStore) LoadIngressFromStreamKey(_ context.Context, streamKey string) (*livekit.IngressInfo, error)

func (*RedisStore) LoadParticipant added in v0.15.5

func (s *RedisStore) LoadParticipant(_ context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) (*livekit.ParticipantInfo, error)

func (*RedisStore) LoadRoom added in v0.15.5

func (s *RedisStore) LoadRoom(_ context.Context, roomName livekit.RoomName, includeInternal bool) (*livekit.Room, *livekit.RoomInternal, error)

func (*RedisStore) LoadSIPDispatchRule added in v1.5.2

func (s *RedisStore) LoadSIPDispatchRule(ctx context.Context, sipDispatchRuleId string) (*livekit.SIPDispatchRuleInfo, error)

func (*RedisStore) LoadSIPTrunk added in v1.5.2

func (s *RedisStore) LoadSIPTrunk(ctx context.Context, sipTrunkId string) (*livekit.SIPTrunkInfo, error)

func (*RedisStore) LockRoom added in v0.15.5

func (s *RedisStore) LockRoom(_ context.Context, roomName livekit.RoomName, duration time.Duration) (string, error)

func (*RedisStore) Start added in v1.2.0

func (s *RedisStore) Start() error

func (*RedisStore) Stop added in v1.2.0

func (s *RedisStore) Stop()

func (*RedisStore) StoreEgress added in v0.15.5

func (s *RedisStore) StoreEgress(_ context.Context, info *livekit.EgressInfo) error

func (*RedisStore) StoreIngress added in v1.2.0

func (s *RedisStore) StoreIngress(ctx context.Context, info *livekit.IngressInfo) error

func (*RedisStore) StoreParticipant added in v0.15.5

func (s *RedisStore) StoreParticipant(_ context.Context, roomName livekit.RoomName, participant *livekit.ParticipantInfo) error

func (*RedisStore) StoreRoom added in v0.15.5

func (s *RedisStore) StoreRoom(_ context.Context, room *livekit.Room, internal *livekit.RoomInternal) error

func (*RedisStore) StoreSIPDispatchRule added in v1.5.2

func (s *RedisStore) StoreSIPDispatchRule(ctx context.Context, info *livekit.SIPDispatchRuleInfo) error

func (*RedisStore) StoreSIPTrunk added in v1.5.2

func (s *RedisStore) StoreSIPTrunk(ctx context.Context, info *livekit.SIPTrunkInfo) error

func (*RedisStore) UnlockRoom added in v0.15.5

func (s *RedisStore) UnlockRoom(_ context.Context, roomName livekit.RoomName, uid string) error

func (*RedisStore) UpdateEgress added in v0.15.5

func (s *RedisStore) UpdateEgress(_ context.Context, info *livekit.EgressInfo) error

func (*RedisStore) UpdateIngress added in v1.2.0

func (s *RedisStore) UpdateIngress(ctx context.Context, info *livekit.IngressInfo) error

func (*RedisStore) UpdateIngressState added in v1.2.4

func (s *RedisStore) UpdateIngressState(ctx context.Context, ingressId string, state *livekit.IngressState) error

type RoomAllocator added in v0.13.0

type RoomAllocator interface {
	CreateRoom(ctx context.Context, req *livekit.CreateRoomRequest) (*livekit.Room, bool, error)
	ValidateCreateRoom(ctx context.Context, roomName livekit.RoomName) error
}

func NewRoomAllocator added in v0.13.0

func NewRoomAllocator(conf *config.Config, router routing.Router, rs ObjectStore) (RoomAllocator, error)

type RoomManager

type RoomManager struct {
	// contains filtered or unexported fields
}

RoomManager manages rooms and its interaction with participants. It's responsible for creating, deleting rooms, as well as running sessions for participants

func NewLocalRoomManager added in v0.12.4

func NewLocalRoomManager(
	conf *config.Config,
	roomStore ObjectStore,
	currentNode routing.LocalNode,
	router routing.Router,
	telemetry telemetry.TelemetryService,
	clientConfManager clientconfiguration.ClientConfigurationManager,
	agentClient rtc.AgentClient,
	egressLauncher rtc.EgressLauncher,
	versionGenerator utils.TimedVersionGenerator,
	turnAuthHandler *TURNAuthHandler,
	bus psrpc.MessageBus,
) (*RoomManager, error)

func (*RoomManager) CleanupRooms

func (r *RoomManager) CleanupRooms() error

CleanupRooms cleans up after old rooms that have been around for a while

func (*RoomManager) CloseIdleRooms

func (r *RoomManager) CloseIdleRooms()

func (*RoomManager) DeleteRoom

func (*RoomManager) GetRoom added in v0.9.2

func (r *RoomManager) GetRoom(_ context.Context, roomName livekit.RoomName) *rtc.Room

func (*RoomManager) HasParticipants added in v0.13.0

func (r *RoomManager) HasParticipants() bool

func (*RoomManager) MutePublishedTrack added in v1.5.1

func (*RoomManager) RemoveParticipant added in v1.5.1

func (*RoomManager) SendData added in v1.5.1

func (*RoomManager) StartSession

func (r *RoomManager) StartSession(
	ctx context.Context,
	roomName livekit.RoomName,
	pi routing.ParticipantInit,
	requestSource routing.MessageSource,
	responseSink routing.MessageSink,
) error

StartSession starts WebRTC session when a new participant is connected, takes place on RTC node

func (*RoomManager) Stop

func (r *RoomManager) Stop()

func (*RoomManager) UpdateParticipant added in v1.5.1

func (*RoomManager) UpdateRoomMetadata added in v1.5.1

func (r *RoomManager) UpdateRoomMetadata(ctx context.Context, req *livekit.UpdateRoomMetadataRequest) (*livekit.Room, error)

func (*RoomManager) UpdateSubscriptions added in v1.5.1

type RoomService

type RoomService struct {
	// contains filtered or unexported fields
}

A rooms service that supports a single node

func NewRoomService

func NewRoomService(
	roomConf config.RoomConfig,
	apiConf config.APIConfig,
	psrpcConf rpc.PSRPCConfig,
	router routing.MessageRouter,
	roomAllocator RoomAllocator,
	serviceStore ServiceStore,
	agentClient rtc.AgentClient,
	egressLauncher rtc.EgressLauncher,
	topicFormatter rpc.TopicFormatter,
	roomClient rpc.TypedRoomClient,
	participantClient rpc.TypedParticipantClient,
) (svc *RoomService, err error)

func (*RoomService) CreateRoom

func (s *RoomService) CreateRoom(ctx context.Context, req *livekit.CreateRoomRequest) (*livekit.Room, error)

func (*RoomService) DeleteRoom

func (*RoomService) GetParticipant

func (*RoomService) ListParticipants

func (*RoomService) ListRooms

func (*RoomService) MutePublishedTrack

func (*RoomService) RemoveParticipant

func (*RoomService) SendData added in v0.12.2

func (*RoomService) UpdateParticipant

func (*RoomService) UpdateRoomMetadata added in v0.13.1

func (s *RoomService) UpdateRoomMetadata(ctx context.Context, req *livekit.UpdateRoomMetadataRequest) (*livekit.Room, error)

func (*RoomService) UpdateSubscriptions added in v0.9.14

type SIPService added in v1.5.2

type SIPService struct {
	// contains filtered or unexported fields
}

func NewSIPService added in v1.5.2

func NewSIPService(
	conf *config.SIPConfig,
	nodeID livekit.NodeID,
	bus psrpc.MessageBus,
	psrpcClient rpc.SIPClient,
	store SIPStore,
	rs livekit.RoomService,
	ts telemetry.TelemetryService,
) *SIPService

func (*SIPService) CreateSIPDispatchRule added in v1.5.2

func (*SIPService) CreateSIPParticipant added in v1.5.2

func (*SIPService) CreateSIPParticipantWithToken added in v1.5.3

func (s *SIPService) CreateSIPParticipantWithToken(ctx context.Context, req *livekit.CreateSIPParticipantRequest, wsUrl, token string) (*livekit.SIPParticipantInfo, error)

func (*SIPService) CreateSIPTrunk added in v1.5.2

func (*SIPService) DeleteSIPDispatchRule added in v1.5.2

func (*SIPService) DeleteSIPTrunk added in v1.5.2

func (*SIPService) ListSIPDispatchRule added in v1.5.2

func (*SIPService) ListSIPTrunk added in v1.5.2

type SIPStore added in v1.5.2

type SIPStore interface {
	StoreSIPTrunk(ctx context.Context, info *livekit.SIPTrunkInfo) error
	LoadSIPTrunk(ctx context.Context, sipTrunkID string) (*livekit.SIPTrunkInfo, error)
	ListSIPTrunk(ctx context.Context) ([]*livekit.SIPTrunkInfo, error)
	DeleteSIPTrunk(ctx context.Context, info *livekit.SIPTrunkInfo) error

	StoreSIPDispatchRule(ctx context.Context, info *livekit.SIPDispatchRuleInfo) error
	LoadSIPDispatchRule(ctx context.Context, sipDispatchRuleID string) (*livekit.SIPDispatchRuleInfo, error)
	ListSIPDispatchRule(ctx context.Context) ([]*livekit.SIPDispatchRuleInfo, error)
	DeleteSIPDispatchRule(ctx context.Context, info *livekit.SIPDispatchRuleInfo) error
}

type ServiceStore added in v0.15.5

type ServiceStore interface {
	LoadRoom(ctx context.Context, roomName livekit.RoomName, includeInternal bool) (*livekit.Room, *livekit.RoomInternal, error)
	DeleteRoom(ctx context.Context, roomName livekit.RoomName) error

	// ListRooms returns currently active rooms. if names is not nil, it'll filter and return
	// only rooms that match
	ListRooms(ctx context.Context, roomNames []livekit.RoomName) ([]*livekit.Room, error)
	LoadParticipant(ctx context.Context, roomName livekit.RoomName, identity livekit.ParticipantIdentity) (*livekit.ParticipantInfo, error)
	ListParticipants(ctx context.Context, roomName livekit.RoomName) ([]*livekit.ParticipantInfo, error)
}

type SessionHandler added in v1.4.0

type SessionHandler interface {
	Logger(ctx context.Context) logger.Logger

	HandleSession(
		ctx context.Context,
		roomName livekit.RoomName,
		pi routing.ParticipantInit,
		connectionID livekit.ConnectionID,
		requestSource routing.MessageSource,
		responseSink routing.MessageSink,
	) error
}

type SignalServer added in v1.4.0

type SignalServer struct {
	// contains filtered or unexported fields
}

func NewDefaultSignalServer added in v1.4.0

func NewDefaultSignalServer(
	currentNode routing.LocalNode,
	bus psrpc.MessageBus,
	config config.SignalRelayConfig,
	router routing.Router,
	roomManager *RoomManager,
) (r *SignalServer, err error)

func NewSignalServer added in v1.4.0

func NewSignalServer(
	nodeID livekit.NodeID,
	region string,
	bus psrpc.MessageBus,
	config config.SignalRelayConfig,
	sessionHandler SessionHandler,
) (*SignalServer, error)

func (*SignalServer) Start added in v1.4.5

func (s *SignalServer) Start() error

func (*SignalServer) Stop added in v1.4.0

func (r *SignalServer) Stop()

type StandardRoomAllocator added in v0.13.7

type StandardRoomAllocator struct {
	// contains filtered or unexported fields
}

func (*StandardRoomAllocator) CreateRoom added in v0.13.7

CreateRoom creates a new room from a request and allocates it to a node to handle it'll also monitor its state, and cleans it up when appropriate

func (*StandardRoomAllocator) ValidateCreateRoom added in v1.3.4

func (r *StandardRoomAllocator) ValidateCreateRoom(ctx context.Context, roomName livekit.RoomName) error

type TURNAuthHandler added in v1.5.0

type TURNAuthHandler struct {
	// contains filtered or unexported fields
}

func NewTURNAuthHandler added in v1.5.0

func NewTURNAuthHandler(keyProvider auth.KeyProvider) *TURNAuthHandler

func (*TURNAuthHandler) CreatePassword added in v1.5.0

func (h *TURNAuthHandler) CreatePassword(apiKey string, pID livekit.ParticipantID) (string, error)

func (*TURNAuthHandler) CreateUsername added in v1.5.0

func (h *TURNAuthHandler) CreateUsername(apiKey string, pID livekit.ParticipantID) string

func (*TURNAuthHandler) HandleAuth added in v1.5.0

func (h *TURNAuthHandler) HandleAuth(username, realm string, srcAddr net.Addr) (key []byte, ok bool)

type WSSignalConnection

type WSSignalConnection struct {
	// contains filtered or unexported fields
}

func NewWSSignalConnection

func NewWSSignalConnection(conn types.WebsocketClient) *WSSignalConnection

func (*WSSignalConnection) ReadRequest

func (c *WSSignalConnection) ReadRequest() (*livekit.SignalRequest, int, error)

func (*WSSignalConnection) ReadWorkerMessage added in v1.5.1

func (c *WSSignalConnection) ReadWorkerMessage() (*livekit.WorkerMessage, int, error)

func (*WSSignalConnection) WriteResponse

func (c *WSSignalConnection) WriteResponse(msg *livekit.SignalResponse) (int, error)

func (*WSSignalConnection) WriteServerMessage added in v1.5.1

func (c *WSSignalConnection) WriteServerMessage(msg *livekit.ServerMessage) (int, error)

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL