/**************************************************************************** * This file is part of the project AqHome. * AqHome (c) by 2023 Martin Preuss, all rights reserved. * * The license for this file can be found in the file COPYING which you * should have received along with this file. ****************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "aqhome/ipc/endpoint2_ipc_p.h" #include #include #define AQH_MSG_ENDPOINT2_IPC_NAME "ipc" GWEN_INHERIT(GWEN_MSG_ENDPOINT, AQH_ENDPOINT2_IPC) /* ------------------------------------------------------------------------------------------------ * forward declarations * ------------------------------------------------------------------------------------------------ */ static void GWENHYWFAR_CB _freeData(void *bp, void *p); /* ------------------------------------------------------------------------------------------------ * implementations * ------------------------------------------------------------------------------------------------ */ void AQH_IpcEndpoint2_Extend(GWEN_MSG_ENDPOINT2 *ep) { AQH_ENDPOINT2_IPC *xep; GWEN_NEW_OBJECT(AQH_ENDPOINT2_IPC, xep); GWEN_INHERIT_SETDATA(GWEN_MSG_ENDPOINT2, AQH_ENDPOINT2_IPC, ep, xep, _freeData); } void _freeData(void *bp, void *p) { AQH_ENDPOINT2_IPC *xep; xep=(AQH_ENDPOINT2_IPC*) p; GWEN_FREE_OBJECT(xep); } uint32_t AQH_IpcEndpoint2_GetAcceptedMsgGroups(const GWEN_MSG_ENDPOINT2 *ep) { if (ep) { AQH_ENDPOINT2_IPC *xep; xep=GWEN_INHERIT_GETDATA(GWEN_MSG_ENDPOINT2, AQH_ENDPOINT2_IPC, ep); if (xep) { return xep->acceptedMsgGroups; } } return 0; } void AQH_IpcEndpoint2_SetAcceptedMsgGroups(GWEN_MSG_ENDPOINT2 *ep, uint32_t i) { if (ep) { AQH_ENDPOINT2_IPC *xep; xep=GWEN_INHERIT_GETDATA(GWEN_MSG_ENDPOINT2, AQH_ENDPOINT2_IPC, ep); if (xep) xep->acceptedMsgGroups=i; } } void AQH_IpcEndpoint2_AddAcceptedMsgGroups(GWEN_MSG_ENDPOINT2 *ep, uint32_t i) { if (ep) { AQH_ENDPOINT2_IPC *xep; xep=GWEN_INHERIT_GETDATA(GWEN_MSG_ENDPOINT2, AQH_ENDPOINT2_IPC, ep); if (xep) xep->acceptedMsgGroups|=i; } } void AQH_IpcEndpoint2_SubAcceptedMsgGroups(GWEN_MSG_ENDPOINT2 *ep, uint32_t i) { if (ep) { AQH_ENDPOINT2_IPC *xep; xep=GWEN_INHERIT_GETDATA(GWEN_MSG_ENDPOINT2, AQH_ENDPOINT2_IPC, ep); if (xep) xep->acceptedMsgGroups&=~i; } } GWEN_MSG_ENDPOINT2 *AQH_IpcEndpoint2_CreateIpcTcpClient(const char *host, int port, const char *name, int groupId) { GWEN_MSG_ENDPOINT2 *ep; ep=GWEN_IpcEndpoint2_CreateIpcTcpClient(host, port, name?name:AQH_MSG_ENDPOINT2_IPC_NAME, groupId); AQH_IpcEndpoint2_Extend(ep); return ep; } GWEN_MSG_ENDPOINT2 *AQH_IpcEndpoint2_CreateIpcTcpServiceForSocket(GWEN_SOCKET *sk, const char *name, int groupId) { GWEN_MSG_ENDPOINT2 *ep; ep=GWEN_IpcEndpoint2_CreateIpcTcpServiceForSocket(sk, name?name:AQH_MSG_ENDPOINT2_IPC_NAME, groupId); AQH_IpcEndpoint2_Extend(ep); return ep; }