mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 10:39:57 +00:00
Handle media session errors
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user