/****************************************************************************
 * 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.
 ****************************************************************************/

#ifndef AQH_ENDPOINT_IPCCLIENT_H
#define AQH_ENDPOINT_IPCCLIENT_H


#include <aqhome/api.h>

#include <gwenhywfar/endpoint.h>


#define AQH_ENDPOINT_IPCCLIENT_FLAGS_WANTUPDATES 0x0001


/**
 * This class expects to later have a child endpoint derived in any form from GWEN_TcpcEndpoint and from
 * AQH_IpcEndpoint. It allows for automatic connect/reconnect including automatic exchange of AQH_ConnectDataIpcMsg
 * messages thereby combining physical and logical connection to a server in one class.
 *
 * Use this class like this:
 * <code>
 *   GWEN_MSG_ENDPOINT *clientEndpoint;
 *   GWEN_MSG_ENDPOINT *ipcBaseEndpoint;
 *
 *   clientEndpoint=AQH_ClientIpcEndpoint_new("testClient", 0);
 *   ipcBaseEndpoint=AQH_IpcEndpoint_CreateIpcTcpClient("127.0.0.1", 1234, "ipcBaseClient", 0);
 *   AQH_IpcEndpoint_SetServiceName(ipcBaseEndpoint, "testclient");
 *   AQH_IpcEndpoint_SetUserName(ipcBaseEndpoint, "testUser");
 *   ...
 *   GWEN_MsgEndpoint_Tree2_AddChild(clientEndpoint, ipcBaseEndpoint);
 * </code>
 *
 */

AQHOME_API GWEN_MSG_ENDPOINT *AQH_ClientIpcEndpoint_new(const char *name, int groupId);



#endif

