@observertc/samples-encoder
Version:
ObserveRTC Library for Encoding Samples
106 lines (98 loc) • 5.36 kB
text/typescript
import { Encoder, NumberToBigIntEncoder } from "./utils";
import { IceTransportStats as InputIceTransportStats } from "./InputSamples";
import {
NumberToNumberEncoder,
StringToStringEncoder,
AttachmentEncoder,
} from "./utils";
import { ClientSample_PeerConnectionSample_IceTransportStats } from "./OutputSamples";
export class IceTransportEncoder implements Encoder<InputIceTransportStats, ClientSample_PeerConnectionSample_IceTransportStats> {
private _visited = false;
private readonly _timestampEncoder: NumberToNumberEncoder;
private readonly _packetsSentEncoder: NumberToNumberEncoder;
private readonly _packetsReceivedEncoder: NumberToNumberEncoder;
private readonly _bytesSentEncoder: NumberToBigIntEncoder;
private readonly _bytesReceivedEncoder: NumberToBigIntEncoder;
private readonly _iceRoleEncoder: StringToStringEncoder;
private readonly _iceLocalUsernameFragmentEncoder: StringToStringEncoder;
private readonly _dtlsStateEncoder: StringToStringEncoder;
private readonly _iceStateEncoder: StringToStringEncoder;
private readonly _selectedCandidatePairIdEncoder: StringToStringEncoder;
private readonly _localCertificateIdEncoder: StringToStringEncoder;
private readonly _remoteCertificateIdEncoder: StringToStringEncoder;
private readonly _tlsVersionEncoder: StringToStringEncoder;
private readonly _dtlsCipherEncoder: StringToStringEncoder;
private readonly _dtlsRoleEncoder: StringToStringEncoder;
private readonly _srtpCipherEncoder: StringToStringEncoder;
private readonly _selectedCandidatePairChangesEncoder: NumberToNumberEncoder;
private readonly _attachmentsEncoder: AttachmentEncoder;
constructor(attachmentsEncoder: AttachmentEncoder) {
this._timestampEncoder = new NumberToNumberEncoder();
this._packetsSentEncoder = new NumberToNumberEncoder();
this._packetsReceivedEncoder = new NumberToNumberEncoder();
this._bytesSentEncoder = new NumberToBigIntEncoder();
this._bytesReceivedEncoder = new NumberToBigIntEncoder();
this._iceRoleEncoder = new StringToStringEncoder();
this._iceLocalUsernameFragmentEncoder = new StringToStringEncoder();
this._dtlsStateEncoder = new StringToStringEncoder();
this._iceStateEncoder = new StringToStringEncoder();
this._selectedCandidatePairIdEncoder = new StringToStringEncoder();
this._localCertificateIdEncoder = new StringToStringEncoder();
this._remoteCertificateIdEncoder = new StringToStringEncoder();
this._tlsVersionEncoder = new StringToStringEncoder();
this._dtlsCipherEncoder = new StringToStringEncoder();
this._dtlsRoleEncoder = new StringToStringEncoder();
this._srtpCipherEncoder = new StringToStringEncoder();
this._selectedCandidatePairChangesEncoder = new NumberToNumberEncoder();
this._attachmentsEncoder = attachmentsEncoder;
}
public get visited(): boolean {
const result = this._visited;
this._visited = false;
return result;
}
public reset() {
this._timestampEncoder.reset();
this._packetsSentEncoder.reset();
this._packetsReceivedEncoder.reset();
this._bytesSentEncoder.reset();
this._bytesReceivedEncoder.reset();
this._iceRoleEncoder.reset();
this._iceLocalUsernameFragmentEncoder.reset();
this._dtlsStateEncoder.reset();
this._iceStateEncoder.reset();
this._selectedCandidatePairIdEncoder.reset();
this._localCertificateIdEncoder.reset();
this._remoteCertificateIdEncoder.reset();
this._tlsVersionEncoder.reset();
this._dtlsCipherEncoder.reset();
this._dtlsRoleEncoder.reset();
this._srtpCipherEncoder.reset();
this._selectedCandidatePairChangesEncoder.reset();
this._attachmentsEncoder.reset();
}
public encode(sample: InputIceTransportStats): ClientSample_PeerConnectionSample_IceTransportStats {
this._visited = true;
return new ClientSample_PeerConnectionSample_IceTransportStats({
timestamp: this._timestampEncoder.encode(sample.timestamp),
id: sample.id,
packetsSent: this._packetsSentEncoder.encode(sample.packetsSent),
packetsReceived: this._packetsReceivedEncoder.encode(sample.packetsReceived),
bytesSent: this._bytesSentEncoder.encode(sample.bytesSent),
bytesReceived: this._bytesReceivedEncoder.encode(sample.bytesReceived),
iceRole: this._iceRoleEncoder.encode(sample.iceRole),
iceLocalUsernameFragment: this._iceLocalUsernameFragmentEncoder.encode(sample.iceLocalUsernameFragment),
dtlsState: this._dtlsStateEncoder.encode(sample.dtlsState),
iceState: this._iceStateEncoder.encode(sample.iceState),
selectedCandidatePairId: this._selectedCandidatePairIdEncoder.encode(sample.selectedCandidatePairId),
localCertificateId: this._localCertificateIdEncoder.encode(sample.localCertificateId),
remoteCertificateId: this._remoteCertificateIdEncoder.encode(sample.remoteCertificateId),
tlsVersion: this._tlsVersionEncoder.encode(sample.tlsVersion),
dtlsCipher: this._dtlsCipherEncoder.encode(sample.dtlsCipher),
dtlsRole: this._dtlsRoleEncoder.encode(sample.dtlsRole),
srtpCipher: this._srtpCipherEncoder.encode(sample.srtpCipher),
selectedCandidatePairChanges: this._selectedCandidatePairChangesEncoder.encode(sample.selectedCandidatePairChanges),
attachments: this._attachmentsEncoder.encode(sample.attachments),
});
}
}