228 lines
4.6 KiB
TypeScript
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;
|
|
}
|
|
|