31 lines
835 B
TypeScript
31 lines
835 B
TypeScript
|
import { BinaryWriter } from "../binary/writer";
|
||
|
|
||
|
export enum WriteKind {
|
||
|
Offer,
|
||
|
Answer,
|
||
|
IceCandidate,
|
||
|
}
|
||
|
export type WriteEvent = {
|
||
|
kind: WriteKind.IceCandidate,
|
||
|
to: string,
|
||
|
candidate: RTCIceCandidate
|
||
|
} | {
|
||
|
kind: WriteKind.Offer,
|
||
|
to: string,
|
||
|
offerSdp: string
|
||
|
} | {
|
||
|
kind: WriteKind.Answer,
|
||
|
to: string,
|
||
|
answerSdp: string
|
||
|
}
|
||
|
export function writeEvent(writer: BinaryWriter, event: WriteEvent) {
|
||
|
writer.writeUInt8(event.kind);
|
||
|
writer.writeFixedString(36, event.to);
|
||
|
switch (event.kind) {
|
||
|
case WriteKind.Offer: writer.writePrefixedString(event.offerSdp); return;
|
||
|
case WriteKind.Answer: writer.writePrefixedString(event.answerSdp); return;
|
||
|
case WriteKind.IceCandidate: writer.writePrefixedString(JSON.stringify(event.candidate.toJSON())); return;
|
||
|
default: throw new Error("kind not good");
|
||
|
}
|
||
|
}
|