doompanning/src/dp_common.h

66 lines
1.5 KiB
C
Raw Normal View History

#ifndef DP_COMMON_H
#define DP_COMMON_H
#include <nng/nng.h>
#include <stdlib.h>
2023-02-12 13:38:54 +01:00
#include "dp_types.h"
#include "log.h"
#ifdef __cplusplus
extern "C" {
#endif
#define dp_fatal(...) log_fatal(__VA_ARGS__)
void dp_nng_fatal(const char *const msg, int rv);
void dp_errno_fatal(const char *const msg);
void dp_nng_init_limits(int ncpu_max, int pool_thread_limit_max, int resolv_thread_limit);
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);
static const char *const CtrlUrl = "ipc://666_ctrl.socket"; // controller publishes here
static const char *const DoomUrl = "ipc://666_doom.socket"; // dooms publish here
2023-02-12 13:38:54 +01:00
typedef u32 doomid_t; // unique id for each doom instance
typedef u16 dmt_t; // for DP_MessageType values
typedef enum DP_MessageType
{
DP_MT_Invalid,
DP_MT_DoomReady,
DP_MT_RunDoom,
DP_MT_QuitDoom,
DP_MT_COUNT
} DP_MessageType;
typedef enum DP_DoomState
{
DP_DS_Unknown,
DP_DS_Ready,
DP_DS_Running,
DP_DS_Quitting,
DP_DS_COUNT,
} DP_DoomState;
extern const char *const DP_DoomState_Strings[];
static inline const char *doomstate_str(DP_DoomState ds)
{
return DP_DoomState_Strings[ds];
}
int dp_recv_new_msg(nng_socket sock, nng_msg **msg_ptr);
int dp_recv_new_msg_nonblock(nng_socket sock, nng_msg **msg_ptr);
int dp_recv_new_msg_flags(nng_socket sock, nng_msg **msg_ptr, int flags);
#ifdef __cplusplus
}
#endif
#endif /* DP_COMMON_H */