sinch-rtc
Version:
RTC JavaScript/Web SDK
39 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionMessageBuffer = void 0;
class SessionMessageBuffer {
constructor() {
this.messageBuffer = {};
}
addTransportMessage(message) {
const { sessionId, msgId, partNo, data } = message;
if (!this.messageBuffer[sessionId]) {
this.messageBuffer[sessionId] = {};
}
if (!this.messageBuffer[sessionId][msgId]) {
this.messageBuffer[sessionId][msgId] = {};
}
this.messageBuffer[sessionId][msgId][partNo] = data;
}
isComplete(message) {
const { sessionId, msgId, partTotal } = message;
return (Object.keys(this.messageBuffer[sessionId][msgId]).length ===
parseInt(partTotal));
}
getPayload(message) {
if (!this.isComplete(message)) {
return null;
}
else {
/** All parts gathered */
const payload = [];
const { sessionId, msgId } = message;
for (const index of Object.keys(this.messageBuffer[sessionId][msgId]).sort()) {
payload.push(this.messageBuffer[sessionId][msgId][index]);
}
return payload.join("");
}
}
}
exports.SessionMessageBuffer = SessionMessageBuffer;
//# sourceMappingURL=SessionMessageBuffer.js.map