Merge #eh20 stuff
This commit is contained in:
commit
7774e7149b
4 changed files with 53 additions and 51 deletions
|
@ -1,4 +1,6 @@
|
|||
#include <nng/nng.h>
|
||||
#include <nng/protocol/pubsub0/pub.h>
|
||||
#include <nng/protocol/pubsub0/sub.h>
|
||||
|
||||
#include <imgui.h>
|
||||
#include <imgui_internal.h>
|
||||
|
@ -804,8 +806,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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
@ -347,11 +341,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;
|
||||
|
|
Loading…
Reference in a new issue