sinch-rtc
Version:
RTC JavaScript/Web SDK
159 lines • 6.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MxpEventsCollector = exports.EventSubType = exports.EventType = void 0;
const mxp_1 = require("../../mxp");
var EventType;
(function (EventType) {
EventType["In"] = "IN";
EventType["Out"] = "OUT";
EventType["Error"] = "ERROR";
})(EventType || (exports.EventType = EventType = {}));
const MessageType = new Map([
[mxp_1.Method.Ack, "ACK"],
[mxp_1.Method.Cancel, "CANCEL"],
[mxp_1.Method.Deny, "DENY"],
[mxp_1.Method.Error, "ERROR"],
[mxp_1.Method.Invite, "INVITE"],
[mxp_1.Method.Join, "JOIN"],
[mxp_1.Method.Joined, "JOINED"],
[mxp_1.Method.Leave, "LEAVE"],
[mxp_1.Method.PeerEvent, "PEEREVENT"],
[mxp_1.Method.Undefined, "UNDEFINED"],
]);
var EventSubType;
(function (EventSubType) {
EventSubType["RECEIVED"] = "RECEIVED";
EventSubType["IGNORED"] = "IGNORED";
EventSubType["WARNING"] = "WARNING";
EventSubType["SENDING"] = "SENDING";
EventSubType["SENDING_ABORTED"] = "SENDING_ABORTED";
EventSubType["SENDING_FAILED"] = "SENDING_FAILED";
EventSubType["SENT"] = "SENT";
})(EventSubType || (exports.EventSubType = EventSubType = {}));
class MxpEventsCollector {
constructor() {
this.addSendingEventLog = this.addIgnoredWarningOrSendingEventLog(EventSubType.SENDING);
this.addSentEventLog = this.addSentOrReceivedEventLog(EventSubType.SENT);
this.addReceivedEventLog = this.addSentOrReceivedEventLog(EventSubType.RECEIVED);
this.addErrorEventLog = (errorEvent) => {
const { sessionId, localTimeStamp, additionalInfo } = errorEvent;
const event = [
EventType.Error,
EventSubType.SENDING_FAILED,
sessionId,
localTimeStamp,
additionalInfo,
];
this.addEvent(event);
};
this.mxpEventLog = {
Version: "5",
Events: [],
};
}
addEvent(event) {
this.mxpEventLog.Events.push(event);
}
addIgnoredEventLog() {
return this.addIgnoredWarningOrSendingEventLog(EventSubType.IGNORED);
}
addWarningEventLog() {
return this.addIgnoredWarningOrSendingEventLog(EventSubType.WARNING);
}
addSendingEventLogForMessage(outboundMessage) {
const { channelId, message } = outboundMessage;
const { method: messageType, sessionId } = message;
const headers = outboundMessage.message.stringifiedValues();
this.addSendingEventLog({
sessionId,
localTimeStamp: Date.now().toString(),
messageType,
headers,
additionalInfo: this.extractAdditionalInfoFromMessage(message, channelId),
});
}
addSentEventLogForMessage(outboundMessage) {
const { channelId, message } = outboundMessage;
const { method: messageType, sessionId } = message;
const headers = outboundMessage.message.stringifiedValues();
this.addSentEventLog({
sessionId,
localTimeStamp: Date.now().toString(),
pubsubTimeStamp: Date.now().toString(),
messageType,
headers,
additionalInfo: this.extractAdditionalInfoFromMessage(message, channelId),
});
}
addErrorEventLogForMessage(outboundMessage) {
const { channelId, message } = outboundMessage;
const { sessionId } = message;
this.addErrorEventLog({
sessionId,
localTimeStamp: Date.now().toString(),
additionalInfo: this.extractAdditionalInfoFromMessage(message, channelId),
});
}
addReceivedEventLogForMessage(inboundMessage) {
const { sessionId, method, values } = inboundMessage;
this.addReceivedEventLog({
sessionId,
localTimeStamp: Date.now().toString(),
pubsubTimeStamp: Date.now().toString(),
messageType: method,
headers: values ? JSON.stringify(values) : "",
additionalInfo: this.extractAdditionalInfoFromMessage(inboundMessage, undefined),
});
}
extractAdditionalInfoFromMessage(message, channelId) {
var _a, _b, _c, _d, _e;
const clientEventBody = ((_a = message.body) === null || _a === void 0 ? void 0 : _a.isClientEvent()) === true ? (_b = message.body) === null || _b === void 0 ? void 0 : _b.data : undefined;
const errorBody = ((_c = message.body) === null || _c === void 0 ? void 0 : _c.isError()) === true ? (_d = message.body) === null || _d === void 0 ? void 0 : _d.data : undefined;
return JSON.stringify({
body_type: (_e = message.body) === null || _e === void 0 ? void 0 : _e.type,
channel: channelId,
cand: message.getIceCandidate(),
client_event: clientEventBody,
error_body: errorBody,
});
}
addIgnoredWarningOrSendingEventLog(eventSubType) {
return (incomingOrOutgoingEvent) => {
const { sessionId, localTimeStamp, messageType, headers, additionalInfo, } = incomingOrOutgoingEvent;
const event = [
EventType.Out,
eventSubType,
sessionId,
localTimeStamp,
MessageType.get(messageType),
headers,
additionalInfo,
];
this.addEvent(event);
};
}
addSentOrReceivedEventLog(eventSubType) {
return (sentOrReceivedMXPEvent) => {
const { sessionId, localTimeStamp, pubsubTimeStamp, messageType, headers, additionalInfo, } = sentOrReceivedMXPEvent;
const event = [
eventSubType === EventSubType.RECEIVED ? EventType.In : EventType.Out,
eventSubType,
sessionId,
localTimeStamp,
pubsubTimeStamp,
MessageType.get(messageType),
headers,
additionalInfo,
];
this.addEvent(event);
};
}
get eventLog() {
return this.mxpEventLog;
}
get events() {
return this.mxpEventLog.Events;
}
}
exports.MxpEventsCollector = MxpEventsCollector;
//# sourceMappingURL=MxpEventsCollector.js.map