node-srt/types/srt-api.d.ts
2021-03-18 08:54:35 +01:00

228 lines
4.6 KiB
TypeScript

import { SRTLoggingLevel, SRTResult, SRTSockOpt, SRTSockStatus } from "../src/srt-api-enums";
export interface SRTEpollEvent {
socket: SRTFileDescriptor
events: number
}
export type SRTReadReturn = Uint8Array | null | SRTResult.SRT_ERROR;
export type SRTFileDescriptor = number;
export type SRTSockOptValue = boolean | number | string
export interface SRTStats {
// global measurements
msTimeStamp: number
pktSentTotal: number
pktRecvTotal: number
pktSndLossTotal: number
pktRcvLossTotal: number
pktRetransTotal: number
pktSentACKTotal: number
pktRecvACKTotal: number
pktSentNAKTotal: number
pktRecvNAKTotal: number
pktSndDropTotal: number
pktRcvDropTotal: number
pktRcvUndecryptTotal: number
byteSentTotal: number
byteRecvTotal: number
byteRcvLossTotal: number
byteRetransTotal: number
byteSndDropTotal: number
byteRcvDropTotal: number
byteRcvUndecryptTotal: number
// local measurements
pktSent: number
pktRecv: number
pktSndLoss: number
pktRcvLoss: number
pktRetrans: number
pktRcvRetrans: number
pktSentACK: number
pktRecvACK: number
pktSentNAK: number
pktRecvNAK: number
mbpsSendRate: number
mbpsRecvRate: number
usSndDuration: number
pktReorderDistance: number
pktRcvAvgBelatedTime: number
pktRcvBelated: number
pktSndDrop: number
pktRcvDrop: number
pktRcvUndecrypt: number
byteSent: number
byteRecv: number
byteRcvLoss: number
byteRetrans: number
byteSndDrop: number
byteRcvDrop: number
byteRcvUndecrypt: number
// instant measurements
usPktSndPeriod: number
pktFlowWindow: number
pktCongestionWindow: number
pktFlightSize: number
msRTT: number
mbpsBandwidth: number
byteAvailSndBuf: number
byteAvailRcvBuf: number
mbpsMaxBW: number
byteMSS: number
pktSndBuf: number
byteSndBuf: number
msSndBuf: number
msSndTsbPdDelay: number
pktRcvBuf: number
byteRcvBuf: number
msRcvBuf: number
msRcvTsbPdDelay: number
pktSndFilterExtraTotal: number
pktRcvFilterExtraTotal: number
pktRcvFilterSupplyTotal: number
pktRcvFilterLossTotal: number
pktSndFilterExtra: number
pktRcvFilterExtra: number
pktRcvFilterSupply: number
pktRcvFilterLoss: number
pktReorderTolerance: number
// Total
pktSentUniqueTotal: number
pktRecvUniqueTotal: number
byteSentUniqueTotal: number
byteRecvUniqueTotal: number
// Local
pktSentUnique: number
pktRecvUnique: number
byteSentUnique: number
byteRecvUnique: number
}
export class SRT {
static OK: SRTResult.SRT_OK;
static ERROR: SRTResult.SRT_ERROR;
static INVALID_SOCK: SRTResult.SRT_ERROR;
// TODO: add SOCKET_OPTIONS, SOCKET_STATUS enums
// and EPOLL_OPTS
/**
*
* @param sender
* @returns SRTSOCKET identifier (integer value)
*/
createSocket(sender?: boolean): number
/**
*
* @param socket
* @param address
* @param port
*/
bind(socket: number, address: string, port: number): SRTResult
/**
*
* @param socket
* @param backlog
*/
listen(socket: number, backlog: number): SRTResult
/**
*
* @param socket
* @param host
* @param port
*/
connect(socket: number, host: string, port: number): SRTResult
/**
*
* @param socket
* @returns File descriptor of incoming connection pipe
*/
accept(socket: number): SRTFileDescriptor
/**
*
* @param socket
*/
close(socket: number): SRTResult
/**
*
* @param socket
* @param chunkSize
*/
read(socket: number, chunkSize: number): SRTReadReturn
/**
*
* @param socket
* @param chunk
*/
write(socket: number, chunk: Buffer): SRTResult
/**
*
* @param socket
* @param option
* @param value
*/
setSockOpt(socket: number, option: SRTSockOpt, value: SRTSockOptValue): SRTResult
/**
*
* @param socket
* @param option
*/
getSockOpt(socket: number, option: SRTSockOpt): SRTSockOptValue
/**
*
* @param socket
*/
getSockState(socket: number): SRTSockStatus
/**
* @returns epid
*/
epollCreate(): number
/**
*
* @param epid
* @param socket
* @param events
*/
epollAddUsock(epid: number, socket: number, events: number): SRTResult
/**
*
* @param epid
* @param msTimeOut
*/
epollUWait(epid: number, msTimeOut: number): SRTEpollEvent[]
/**
*
* @param logLevel Or 0 - 7 integer (not all values present in enum)
*/
setLogLevel(logLevel: SRTLoggingLevel): SRTResult;
/**
*
* @param socket
* @param clear if true, accumulated stats are cleared after each call
* @returns Current SRT statistics
*/
stats(socket: number, clear: boolean): SRTStats;
}