From 54fed45717d2e63b0685d4328dbe12a33716cd81 Mon Sep 17 00:00:00 2001 From: oxmox Date: Tue, 11 Apr 2023 01:14:21 +0200 Subject: [PATCH 1/3] remove TODO, it's done! :) --- src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c b/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c index 947fea3..9b3bc79 100644 --- a/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c +++ b/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c @@ -209,12 +209,6 @@ DoomContext g_doomContext; // void IB_StartTic (void) { - /* TODO: post input events (could this be done in IB_FinishUpdate? try it) - case SDL_KEYDOWN: - event.type = ev_keydown; - event.data1 = xlatekey(sdl_event.key.keysym.sym); - D_PostEvent(&event); - */ } void IB_GetFramebuffer(unsigned char **pixels, size_t *pitch) From 1f7b7de3f32b4e60498eca68be469449cbcac52f Mon Sep 17 00:00:00 2001 From: oxmox Date: Tue, 11 Apr 2023 01:17:22 +0200 Subject: [PATCH 2/3] dp_doom: add '-dp-host' param to be able to use tcp as a transport --- .../linuxdoom-1.10/ib_video/ib_video_nng.c | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c b/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c index 9b3bc79..4ffac20 100644 --- a/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c +++ b/src/dp_doom/linuxdoom-1.10/ib_video/ib_video_nng.c @@ -346,11 +346,27 @@ void IB_InitGraphics(const char *title, size_t screen_width, size_t screen_heigh signal(SIGINT, I_Quit_Wrapper); - dp_nng_init_limits(1, 1, 1); - g_doomContext.pub = make_doom_pub(DoomUrlIpc); - g_doomContext.sub = make_doom_sub(CtrlUrlIpc); + int p = M_CheckParm("-dp-host"); + + if (p) + { + // use tcp transport with the host given on the command line + char url[1024]; + snprintf(url, 1024, "tcp://%s:%d", myargv[p+1], DoomPort); + g_doomContext.pub = make_doom_pub(url); + snprintf(url, 1024, "tcp://%s:%d", myargv[p+1], CtrlPort); + g_doomContext.sub = make_doom_sub(url); + } + else + { + assert(false); + // use unix domain sockets + g_doomContext.pub = make_doom_pub(DoomUrlIpc); + g_doomContext.sub = make_doom_sub(CtrlUrlIpc); + } + g_doomContext.id = getpid(); g_doomContext.state = DP_DS_Ready; g_doomContext.f = do_doom_ready; From da225e85d097ab07fbb99d211afa2464ec15534e Mon Sep 17 00:00:00 2001 From: oxmox Date: Tue, 11 Apr 2023 01:22:00 +0200 Subject: [PATCH 3/3] ctrl: also listen on tcp --- src/doompanning.cc | 31 +++++++++++++++++++++++++++++-- src/dp_common.c | 35 ----------------------------------- src/dp_common.h | 10 +++++----- 3 files changed, 34 insertions(+), 42 deletions(-) diff --git a/src/doompanning.cc b/src/doompanning.cc index ebe4378..6fbff6f 100644 --- a/src/doompanning.cc +++ b/src/doompanning.cc @@ -1,4 +1,6 @@ #include +#include +#include #include #include @@ -834,8 +836,33 @@ int main(int argc, char *argv[]) nng_set_resolve_thread_max(1); ControllerContext ctx; - ctx.pub = make_ctrl_pub(CtrlUrlIpc); - ctx.sub = make_ctrl_sub(DoomUrlIpc); + + // ctrl pub socket: ctrl -> dooms + if (int res = nng_pub0_open(&ctx.pub)) + dp_nng_fatal("ctrl/nng_pub0_open", res); + + if (int res = nng_listen(ctx.pub, CtrlUrlIpc, nullptr, 0)) + dp_nng_fatal("ctrl/nng_listen/ipc", res); + + if (int res = nng_listen(ctx.pub, CtrlUrlTcp, nullptr, 0)) + dp_nng_fatal("ctrl/nng_listen/tcp4", res); + + // ctrl sub socket: dooms -> ctrl + if (int res = nng_sub0_open(&ctx.sub)) + dp_nng_fatal("ctrl/nng_sub0_open", res); + + if (int res = nng_setopt(ctx.sub, NNG_OPT_SUB_SUBSCRIBE, "", 0)) + dp_nng_fatal("ctrl/subscribe", res); + + if (int res = nng_socket_set_ms(ctx.sub, NNG_OPT_RECVTIMEO, 100)) + dp_nng_fatal("ctrl/recvtimeo", res); + + if (int res = nng_listen(ctx.sub, DoomUrlIpc, NULL, 0)) + dp_nng_fatal("make_ctrl_sub/nng_listen", res); + + if (int res = nng_listen(ctx.sub, DoomUrlTcp, nullptr, 0)) + dp_nng_fatal("ctrl/nng_listen/tcp4", res); + ctx.window = window; ctx.renderer = renderer; ctx.inputs.head.msgType = DP_MT_Inputs; diff --git a/src/dp_common.c b/src/dp_common.c index c193ce9..93bc352 100644 --- a/src/dp_common.c +++ b/src/dp_common.c @@ -28,41 +28,6 @@ void dp_nng_init_limits(int ncpu_max, int pool_thread_limit_max, int resolv_thre nng_set_resolve_thread_max(resolv_thread_limit); } -nng_socket make_ctrl_pub(const char *url) -{ - nng_socket sock; - int res = 0; - - if ((res = nng_pub0_open(&sock))) - dp_nng_fatal("make_ctrl_pub/nng_pub0_open", res); - - if ((res = nng_listen(sock, url, NULL, 0))) - dp_nng_fatal("make_ctrl_pub/nng_listen", res); - - return sock; -} - -nng_socket make_ctrl_sub(const char *url) -{ - nng_socket sock; - int res = 0; - - if ((res = nng_sub0_open(&sock))) - dp_nng_fatal("make_ctrl_sub/nng_sub0_open", res); - - if ((res = nng_setopt(sock, NNG_OPT_SUB_SUBSCRIBE, "", 0))) - dp_nng_fatal("make_ctrl_sub/subscribe", res); - - if ((res = nng_socket_set_ms(sock, NNG_OPT_RECVTIMEO, 100))) - dp_nng_fatal("make_ctrl_sub/recvtimeo", res); - - - if ((res = nng_listen(sock, url, NULL, 0))) - dp_nng_fatal("make_ctrl_sub/nng_listen", res); - - return sock; -} - nng_socket make_doom_pub(const char *url) { nng_socket sock; diff --git a/src/dp_common.h b/src/dp_common.h index a33c7fb..fdd5cb8 100644 --- a/src/dp_common.h +++ b/src/dp_common.h @@ -116,14 +116,14 @@ static inline bool dp_nng_is_timeout(int res) return res == NNG_ETIMEDOUT || res == NNG_EAGAIN; } -// Controller listens, Dooms dial. +// Controller listens, dooms dial. static const char *const CtrlUrlIpc = "ipc://666_ctrl.socket"; // controller publishes here static const char *const DoomUrlIpc = "ipc://666_doom.socket"; // dooms publish here -static const char *const CtrlUrlTcp = "tcp4://:42666"; // controller publishes here -static const char *const DoomUrlTcp = "tcp4://:42667"; // dooms publish here +static const char *const CtrlUrlTcp = "tcp://:42666"; // controller publishes here +static const char *const DoomUrlTcp = "tcp://:42667"; // dooms publish here +static const int CtrlPort = 42666; // controller publishes on this port +static const int DoomPort = 42667; // dooms publish here -nng_socket make_ctrl_pub(const char *url); -nng_socket make_ctrl_sub(const char *url); nng_socket make_doom_pub(const char *url); nng_socket make_doom_sub(const char *url);