UNPKG

@skyway-sdk/core

Version:

The official Next Generation JavaScript SDK for SkyWay

95 lines 3.63 kB
import { Event } from '@skyway-sdk/common'; import * as sdpTransform from 'sdp-transform'; import type { SkyWayContext } from '../../../../context'; import type { AnalyticsSession } from '../../../../external/analytics'; import type { IceManager } from '../../../../external/ice'; import type { SignalingSession } from '../../../../external/signaling'; import type { Codec } from '../../../../media'; import type { LocalPersonImpl } from '../../../../member/localPerson'; import type { RemoteMember } from '../../../../member/remoteMember'; import type { PublicationImpl } from '../../../../publication'; import type { TransportConnectionState } from '../../../interface'; import type { P2PMessage } from '.'; import { Peer } from './peer'; export declare class Sender extends Peer { readonly id: string; readonly onConnectionStateChanged: Event<TransportConnectionState>; publications: { [publicationId: string]: PublicationImpl; }; transceivers: { [publicationId: string]: RTCRtpTransceiver; }; datachannels: { [publicationId: string]: RTCDataChannel; }; private _pendingPublications; private _isNegotiating; private readonly promiseQueue; private _disposer; private _ms; /** * browser が想定どおりの close callback を踏まない場合でも、 * close 済み DataChannel を GC できるように WeakSet を使う。 * strong collection へ変更すると解放されない要素を保持しやすいので、 * weak reference のまま維持すること。 * @private */ _closingDataChannels: WeakSet<RTCDataChannel>; private _backoffIceRestarted; private _connectionState; private _log; private _unsubscribeStreamEnableChange; private _cleanupStreamCallbacks; private _endpoint; private _sendDataQueue; constructor(context: SkyWayContext, iceManager: IceManager, signaling: SignalingSession, analytics: AnalyticsSession | undefined, localPerson: LocalPersonImpl, endpoint: RemoteMember); private _setConnectionState; /**@throws */ readonly restartIce: () => Promise<void>; get hasMedia(): boolean; private _getMid; private _listenStreamEnableChange; /**@throws {@link SkyWayError} */ add(publication: PublicationImpl): Promise<void>; private _setupTransportAccessForStream; /**@private */ _closeDataChannel(publicationId: string): void; /**@private */ _shouldSuppressDataChannelError(dc: RTCDataChannel): boolean; /**@throws {SkyWayError} */ remove(publicationId: string): Promise<void>; private _replaceTrack; private _handleReceiverAnswer; private _safariSetupEncoding; /**@throws {@link SkyWayError} */ private _resolvePendingSender; close(): void; } export declare function applyCodecCapabilities(codecCapabilities: Codec[], mid: string, sdpObject: sdpTransform.SessionDescription): void; export interface SenderProduceMessage extends P2PMessage { kind: 'senderProduceMessage'; payload: { sdp: RTCSessionDescriptionInit; publicationId: string; info: { publicationId: string; streamId: string; mid: string; }; }; } export interface SenderUnproduceMessage extends P2PMessage { kind: 'senderUnproduceMessage'; payload: { sdp: RTCSessionDescriptionInit; publicationId: string; }; } export interface SenderRestartIceMessage extends P2PMessage { kind: 'senderRestartIceMessage'; payload: { sdp: RTCSessionDescriptionInit; }; } //# sourceMappingURL=sender.d.ts.map