From bb9665b8564c2cdb1311f22e4bd5ea9acb7a7b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20So=C3=9Fnowski?= Date: Fri, 21 Jan 2022 02:27:07 +0100 Subject: [PATCH] finished SRTO_STREAMID implementation added String as possible Value to setSockOpt added test for normal SRT API removed double SRTO_STREAMID from srt-enums.h --- spec/async_srt_spec.js | 2 +- spec/srt_spec.js | 15 +++++++++++++-- src/node-srt.cc | 10 ++++++++++ src/srt-enums.h | 1 - 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/spec/async_srt_spec.js b/spec/async_srt_spec.js index 49ac214..e6e78ef 100644 --- a/spec/async_srt_spec.js +++ b/spec/async_srt_spec.js @@ -53,7 +53,7 @@ describe("Async SRT API with callbacks", () => { }); }); }); - + it("can set SRT socket in non-blocking mode", done => { const asyncSrt = new AsyncSRT(); asyncSrt.createSocket(false, (socket) => { diff --git a/spec/srt_spec.js b/spec/srt_spec.js index 4a48c8a..dc0398d 100644 --- a/spec/srt_spec.js +++ b/spec/srt_spec.js @@ -39,6 +39,17 @@ describe("SRT library", () => { expect(value).toEqual(1052); }); + it("can set SRT sockopt SRTO_STREAMID", () => { + const srt = new SRT(); + const socket = srt.createSocket(); + const result = srt.setSockOpt(socket, SRT.SRTO_STREAMID, "STREAMID"); + + expect(result).not.toEqual(SRT.ERROR); + const value = srt.getSockOpt(socket, SRT.SRTO_STREAMID); + + expect(value).toEqual("STREAMID"); + }); + it("can set SRT socket in non-blocking mode", () => { const srt = new SRT(); const socket = srt.createSocket(); @@ -59,7 +70,7 @@ describe("SRT library", () => { const epid = srt.epollCreate(); srt.epollAddUsock(epid, socket, SRT.EPOLL_IN | SRT.EPOLL_ERR); const events = srt.epollUWait(epid, 500); - + expect(events.length).toEqual(0); }); @@ -67,4 +78,4 @@ describe("SRT library", () => { expect(SRT.SRTO_UDP_SNDBUF).toEqual(8); expect(SRT.SRTO_RCVLATENCY).toEqual(43); }); -}); \ No newline at end of file +}); diff --git a/src/node-srt.cc b/src/node-srt.cc index a281292..5378b67 100644 --- a/src/node-srt.cc +++ b/src/node-srt.cc @@ -267,6 +267,15 @@ Napi::Value NodeSRT::SetSockOpt(const Napi::CallbackInfo& info) { Napi::Error::New(env, srt_getlasterror_str()).ThrowAsJavaScriptException(); return Napi::Number::New(env, SRT_ERROR); } + } else if (info[2].IsString()) { + Napi::String value = info[2].As(); + int32_t optName = option; + const char * optValue = std::string(value).c_str(); + result = srt_setsockflag(socketValue, (SRT_SOCKOPT)optName, optValue, sizeof(string)); + if (result == SRT_ERROR) { + Napi::Error::New(env, srt_getlasterror_str()).ThrowAsJavaScriptException(); + return Napi::Number::New(env, SRT_ERROR); + } } return Napi::Number::New(env, result); } @@ -349,6 +358,7 @@ Napi::Value NodeSRT::GetSockOpt(const Napi::CallbackInfo& info) { char optValue[512]; int optSize = sizeof(optValue); result = srt_getsockflag(socketValue, (SRT_SOCKOPT)optName, (void *)&optValue, &optSize); + returnVal = Napi::Value::From(env, std::string(optValue)); break; } diff --git a/src/srt-enums.h b/src/srt-enums.h index 439b7c9..475c2ea 100644 --- a/src/srt-enums.h +++ b/src/srt-enums.h @@ -27,7 +27,6 @@ ENUM(SRTO_INPUTBW), \ ENUM(SRTO_OHEADBW), \ ENUM(SRTO_PASSPHRASE), \ - ENUM(SRTO_STREAMID), \ ENUM(SRTO_PBKEYLEN), \ ENUM(SRTO_KMSTATE), \ ENUM(SRTO_IPTTL), \