Handle media session errors

This commit is contained in:
hensm
2020-02-21 12:21:16 +00:00
parent 40049985ef
commit d196f4201b

View File

@@ -34,6 +34,7 @@ import { CallbacksMap
const _id = new WeakMap<Media, string>(); const _id = new WeakMap<Media, string>();
const _isActive = new WeakMap<Media, boolean>();
const _updateListeners = new WeakMap<Media, Set<UpdateListener>>(); const _updateListeners = new WeakMap<Media, Set<UpdateListener>>();
const _sendMediaMessageCallbacks = new WeakMap<Media, CallbacksMap>(); const _sendMediaMessageCallbacks = new WeakMap<Media, CallbacksMap>();
@@ -64,6 +65,7 @@ export default class Media {
, _internalSessionId: string) { , _internalSessionId: string) {
_id.set(this, uuid()); _id.set(this, uuid());
_isActive.set(this, true);
_updateListeners.set(this, new Set()); _updateListeners.set(this, new Set());
_sendMediaMessageCallbacks.set(this, new Map()); _sendMediaMessageCallbacks.set(this, new Map());
@@ -288,9 +290,15 @@ export default class Media {
, successCallback?: SuccessCallback , successCallback?: SuccessCallback
, errorCallback?: ErrorCallback): void { , errorCallback?: ErrorCallback): void {
this._sendMediaMessage({ this._sendMediaMessage(
type: "STOP" { type: "STOP" }
}, successCallback, errorCallback); , () => {
_isActive.set(this, false);
if (successCallback) {
successCallback();
}
}
, errorCallback);
} }
public supportsCommand (_command: string): boolean { public supportsCommand (_command: string): boolean {
@@ -304,6 +312,20 @@ export default class Media {
, successCallback?: SuccessCallback , successCallback?: SuccessCallback
, errorCallback?: ErrorCallback) { , errorCallback?: ErrorCallback) {
// TODO: Handle this and other errors better
if (!_isActive.get(this)) {
if (errorCallback) {
errorCallback(new _Error(ErrorCode.SESSION_ERROR
, "INVALID_MEDIA_SESSION_ID"
, {
type: "INVALID_REQUEST"
, reason: "INVALID_MEDIA_SESSION_ID"
}));
}
return;
}
message.mediaSessionId = this.mediaSessionId; message.mediaSessionId = this.mediaSessionId;
message.requestId = 0; message.requestId = 0;
message.sessionId = this.sessionId; message.sessionId = this.sessionId;