From d41259a1388aeb8b42a66659e7b246e57cda46e4 Mon Sep 17 00:00:00 2001 From: birme Date: Wed, 24 Jun 2020 12:36:44 +0200 Subject: [PATCH] Added example for non blocking polling --- examples/epoll.js | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 examples/epoll.js diff --git a/examples/epoll.js b/examples/epoll.js new file mode 100644 index 0000000..134f9a2 --- /dev/null +++ b/examples/epoll.js @@ -0,0 +1,48 @@ +const { SRT } = require('../index.js'); + +const srt = new SRT(); +const socket = srt.createSocket(); +if (socket !== -1) { + console.log("Created socket: " + socket); +} + +let result; + +result = srt.bind(socket, "0.0.0.0", 1234); +if (!result) { + console.log("Bind success"); +} else { + console.log(result); +} + +result = srt.listen(socket, 10); +if (!result) { + console.log("Listen success"); +} else { + console.log(result); +} + +const epid = srt.epollCreate(); +srt.epollAddUsock(epid, socket, SRT.EPOLL_IN | SRT.EPOLL_ERR); + +console.log("Waiting for action"); + +while (true) { + const events = srt.epollUWait(epid, 500); + events.forEach(event => { + const status = srt.getSockState(event.socket); + if (status === SRT.SRTS_BROKEN || status === SRT.SRTS_NONEXIST || status === SRT.SRTS_CLOSED) { + console.log("Client disconnected"); + srt.close(event.socket); + } else if (event.socket === socket) { + const fhandle = srt.accept(socket); + console.log("New connection"); + srt.epollAddUsock(epid, fhandle, SRT.EPOLL_IN | SRT.EPOLL_ERR); + } else { + while (true) { + const chunk = srt.read(event.socket, 1316); + console.log("Read chunk: " + chunk.length); + } + } + }); +}