UNPKG

@phenixrts/sdk

Version:
62 lines (61 loc) 2.68 kB
import IDisposable from '../../lang/IDisposable'; import ReadOnlySubject from '../../rx/ReadOnlySubject'; import EndPoint, { IStream } from '../discovery/EndPoint'; import IPeerConnection from '../../rtc/IPeerConnection'; import { IRtcPublishMonitorStatistic } from '../../rtc/RtcPublishMonitor'; import PublisherState from './PublisherState'; import { EncodedEdgeToken } from '../../edgeAuth/EncodedEdgeToken'; export default class Publisher implements IDisposable { private readonly _logger; private readonly _tokenContext; private readonly _publisherContext; private readonly _peerConnectionContext; private readonly _stateContext; private readonly _exponentialBackoff; private readonly _publisherStartTime; private readonly _readOnlyToken; private readonly _readOnlyPeerConnection; private readonly _readOnlyState; private readonly _readOnlyTokenExpiring; private readonly _readOnlyAuthorized; private readonly _readOnlyOnline; private readonly _readOnlyLoading; private readonly _readOnlyPublishing; private readonly _readOnlyStandby; private readonly _readOnlyStopped; private readonly _readOnlyFailureCount; private readonly _readOnlyEndPoint; private readonly _readOnlyStream; private readonly _readOnlyRtcStatistics; private readonly _readOnlyMediaStream; private _metricsService; private readonly _sessionTelemetry; constructor(mediaStream: MediaStream, token: EncodedEdgeToken, name?: string); get token(): EncodedEdgeToken; set token(token: EncodedEdgeToken); get peerConnection(): ReadOnlySubject<IPeerConnection | null>; get state(): ReadOnlySubject<PublisherState>; get tokenExpiring(): ReadOnlySubject<boolean>; get authorized(): ReadOnlySubject<boolean>; get online(): ReadOnlySubject<boolean>; get loading(): ReadOnlySubject<boolean>; get publishing(): ReadOnlySubject<boolean>; get standby(): ReadOnlySubject<boolean>; get stopped(): ReadOnlySubject<boolean>; get failureCount(): ReadOnlySubject<number>; get endPoint(): ReadOnlySubject<EndPoint | null>; get stream(): ReadOnlySubject<IStream | null>; get streamId(): string; get rtcStatistics(): ReadOnlySubject<IRtcPublishMonitorStatistic | null>; get mediaStream(): ReadOnlySubject<MediaStream | null>; stop(reason: string): Promise<void>; private processStop; dispose(): Promise<void>; getUri(token: EncodedEdgeToken): URL; start(): Promise<void>; private processStart; setMediaStream(mediaStream: MediaStream): void; private getRetryInterval; private handleStreamFailure; private cleanUpResources; }