@phenixrts/sdk
Version:
JavaScript SDK
62 lines (61 loc) • 2.68 kB
TypeScript
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;
}