gwenhywfar  5.14.1
Typedefs | Functions
Message Sender/Receiver

This file contains the definition of a GWEN_MSG_ENDPOINT, an object which can send and receive messages (base class). More...

Collaboration diagram for Message Sender/Receiver:

Typedefs

typedef void(* GWEN_MSG_ENDPOINT_ADDSOCKETS_FN) (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 
typedef void(* GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN) (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 

Functions

GWENHYWFAR_API void GWEN_MsgEndpoint_AddFlags (GWEN_MSG_ENDPOINT *ep, uint32_t f)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_AddReceivedMessage (GWEN_MSG_ENDPOINT *ep, GWEN_MSG *m)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_AddSendMessage (GWEN_MSG_ENDPOINT *ep, GWEN_MSG *m)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_AddSockets (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_Attach (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_CheckSockets (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenAddSockets (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenCheckSockets (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenIoLoop (GWEN_MSG_ENDPOINT *ep, int timeout)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_DelFlags (GWEN_MSG_ENDPOINT *ep, uint32_t f)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_DiscardInput (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_Disconnect (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_free (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSGGWEN_MsgEndpoint_GetCurrentlyReceivedMsg (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_GetDefaultMessageSize (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSGGWEN_MsgEndpoint_GetFirstReceivedMessage (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSGGWEN_MsgEndpoint_GetFirstSendMessage (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetFlags (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_GetGroupId (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API const char * GWEN_MsgEndpoint_GetName (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetNextMessageId (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSG_LISTGWEN_MsgEndpoint_GetReceivedMessageList (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSG_LISTGWEN_MsgEndpoint_GetSendMessageList (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_SOCKETGWEN_MsgEndpoint_GetSocket (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_GetState (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API time_t GWEN_MsgEndpoint_GetTimeOfLastStateChange (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_HaveMessageToSend (const GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_IoLoop (GWEN_MSG_ENDPOINT *ep, int timeout)
 
GWENHYWFAR_API GWEN_MSG_ENDPOINTGWEN_MsgEndpoint_new (const char *name, int groupId)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_ReadFromSocket (GWEN_MSG_ENDPOINT *ep, uint8_t *bufferPtr, uint32_t bufferLen)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API GWEN_MSG_ENDPOINT_ADDSOCKETS_FN GWEN_MsgEndpoint_SetAddSocketsFn (GWEN_MSG_ENDPOINT *ep, GWEN_MSG_ENDPOINT_ADDSOCKETS_FN fn)
 
GWENHYWFAR_API GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN GWEN_MsgEndpoint_SetCheckSocketsFn (GWEN_MSG_ENDPOINT *ep, GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN fn)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_SetCurrentlyReceivedMsg (GWEN_MSG_ENDPOINT *ep, GWEN_MSG *m)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_SetDefaultMessageSize (GWEN_MSG_ENDPOINT *ep, int i)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_SetFlags (GWEN_MSG_ENDPOINT *ep, uint32_t f)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_SetSocket (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKET *sk)
 
GWENHYWFAR_API void GWEN_MsgEndpoint_SetState (GWEN_MSG_ENDPOINT *ep, int m)
 
GWENHYWFAR_API GWEN_MSGGWEN_MsgEndpoint_TakeFirstReceivedMessage (GWEN_MSG_ENDPOINT *ep)
 
GWENHYWFAR_API int GWEN_MsgEndpoint_WriteToSocket (GWEN_MSG_ENDPOINT *ep, const uint8_t *bufferPtr, uint32_t bufferLen)
 

Detailed Description

This file contains the definition of a GWEN_MSG_ENDPOINT, an object which can send and receive messages (base class).

GWEN_MSG_ENDPOINT

There are a few central structures/objects:

This class was developed around the system call select() which takes 3 sets of sockets to be checked:

Virtual Functions

GWEN_MSG_ENDPOINT has two virtual functions which must be implemented for this class to be usefull:

GWEN_MSG_ENDPOINT_ADDSOCKETS_FN

This function lets the implementation add sockets to the given socket sets which are then presented to the select() system call. If the given GWEN_MSG_ENDPOINT object is waiting for incoming data it adds its own socket to the read set. if it has data to write it adds its socket to the write set.

GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN

This function is called after return from the select() system call with the socket sets returned by that function. It lets the implementation check whether its socket(s) has/have become readable or writable and act accordingly (e.g. read data if socket is in the given read set or write if the socket is in the given write set).

Sending and Receiving Messages

As seen above the main functionality is implemented in the virtual function GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN. To make it easier to use the MSGIO API there is another class called GWEN_MsgIoEndpoint (see GWEN_MsgIoEndpoint_Extend) which simplifies reading and writing messages. It implements GWEN_MSG_ENDPOINT_ADDSOCKETS_FN and GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN. However, it has to know the format of the received messages in order to correctly read them. Therefore that class has another virtual function called GWEN_ENDPOINT_MSGIO_GETBYTESNEEDED_FN. This function is called when data has been read from the endpoints socket to determine how many of those bytes belong to a given message.

Example Implementation

A first complete example sending an receiving messages is in the GWEN_IpcEndpoint class (see GWEN_IpcEndpoint_CreateIpcTcpClient). This class implements a basic protocol for inter-process-communication. When creating an object of that class the following functions are called:

Example Usage Code

GWEN_MSG_ENDPOINT *epClient; int loop; GWEN_MSG *msg;

epClient=GWEN_IpcEndpoint_CreateIpcTcpClient("127.0.0.1", 55555, NULL, 1); msg=GWEN_IpcMsg_new(1, 2, 3, 0, NULL); GWEN_MsgEndpoint_AddSendMessage(epClient, msg);

for (loop=0;; loop++) { GWEN_MsgEndpoint_IoLoop(epClient, 2000);

while( (msg=GWEN_MsgEndpoint_TakeFirstReceivedMessage(epClient)) ) { DBG_INFO(GWEN_LOGDOMAIN, " - received msg: protoId=%d, protoVer=%d, code=%d", GWEN_IpcMsg_GetProtoId(msg), GWEN_IpcMsg_GetProtoVersion(msg), GWEN_IpcMsg_GetCode(msg)); GWEN_Msg_free(msg); } } return 0;

As seen above the application only needs to setup the endpoints according to the type of messages and connections (in this case IPC messages over TCP) and then periodically call a combination of the following functions:

If the application needs to manage multiple connections at the same time it can take advantage of the TREE2 functions for message endpoints to create a tree of endpoints:

GWEN_MSG_ENDPOINT *epRoot; GWEN_MSG_ENDPOINT *epClient;

epRoot=GWEN_MsgEndpoint_new(NAME, 0); epClient=GWEN_IpcEndpoint_CreateIpcTcpClient("127.0.0.1", 55555, NULL, 1); GWEN_MsgEndpoint_Tree2_AddChild(epRoot, epClient); GWEN_MsgEndpoint_AddSendMessage(epClient, msg);

for (loop=0;; loop++) { GWEN_MsgEndpoint_ChildrenIoLoop(epRoot, 2000);

while( (msg=GWEN_MsgEndpoint_TakeFirstReceivedMessage(epClient)) ) { DBG_INFO(GWEN_LOGDOMAIN, " - received msg: protoId=%d, protoVer=%d, code=%d", GWEN_IpcMsg_GetProtoId(msg), GWEN_IpcMsg_GetProtoVersion(msg), GWEN_IpcMsg_GetCode(msg)); GWEN_Msg_free(msg); } } return 0;

When working with a tree of endpoints (i.e. in this case it rather is a list) the function GWEN_MsgEndpoint_ChildrenIoLoop() needs to be called with the root endpoint as argument instead of GWEN_MsgEndpoint_IoLoop.

Typedef Documentation

◆ GWEN_MSG_ENDPOINT_ADDSOCKETS_FN

typedef void(* GWEN_MSG_ENDPOINT_ADDSOCKETS_FN) (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)

Definition at line 183 of file endpoint.h.

◆ GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN

typedef void(* GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN) (GWEN_MSG_ENDPOINT *ep, GWEN_SOCKETSET *readSet, GWEN_SOCKETSET *writeSet, GWEN_SOCKETSET *xSet)

Definition at line 188 of file endpoint.h.

Function Documentation

◆ GWEN_MsgEndpoint_AddFlags()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddFlags ( GWEN_MSG_ENDPOINT ep,
uint32_t  f 
)

Definition at line 169 of file endpoint.c.

◆ GWEN_MsgEndpoint_AddReceivedMessage()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddReceivedMessage ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

Definition at line 221 of file endpoint.c.

References GWEN_Msg_List_Add(), and GWEN_Msg_RewindCurrentPos().

Referenced by _distributeBufferContent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_AddSendMessage()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddSendMessage ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

Definition at line 250 of file endpoint.c.

References GWEN_Msg_List_Add(), and GWEN_Msg_RewindCurrentPos().

Here is the call graph for this function:

◆ GWEN_MsgEndpoint_AddSockets()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddSockets ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKETSET readSet,
GWEN_SOCKETSET writeSet,
GWEN_SOCKETSET xSet 
)

Definition at line 289 of file endpoint.c.

Referenced by _addSocketsWhenConnected(), _addSocketsWhenConnecting(), GWEN_MsgEndpoint_ChildrenAddSockets(), and GWEN_MsgEndpoint_IoLoop().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_Attach()

GWENHYWFAR_API void GWEN_MsgEndpoint_Attach ( GWEN_MSG_ENDPOINT ep)

Definition at line 53 of file endpoint.c.

Referenced by GWEN_MsgRequest_SetEndpoint().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_CheckSockets()

GWENHYWFAR_API void GWEN_MsgEndpoint_CheckSockets ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKETSET readSet,
GWEN_SOCKETSET writeSet,
GWEN_SOCKETSET xSet 
)

Definition at line 297 of file endpoint.c.

Referenced by _checkSocketsWhenConnected(), _checkSocketsWhenConnecting(), GWEN_MsgEndpoint_ChildrenCheckSockets(), and GWEN_MsgEndpoint_IoLoop().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_ChildrenAddSockets()

GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenAddSockets ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKETSET readSet,
GWEN_SOCKETSET writeSet,
GWEN_SOCKETSET xSet 
)

Definition at line 305 of file endpoint.c.

References GWEN_MsgEndpoint_AddSockets().

Referenced by _addSockets(), and GWEN_MsgEndpoint_ChildrenIoLoop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_ChildrenCheckSockets()

GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenCheckSockets ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKETSET readSet,
GWEN_SOCKETSET writeSet,
GWEN_SOCKETSET xSet 
)

Definition at line 321 of file endpoint.c.

References GWEN_MsgEndpoint_CheckSockets().

Referenced by _checkSockets(), and GWEN_MsgEndpoint_ChildrenIoLoop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_ChildrenIoLoop()

GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenIoLoop ( GWEN_MSG_ENDPOINT ep,
int  timeout 
)

Handles IO for all first-level children of the given endpoint (like GWEN_MsgEndpoint_IoLoop does for a single endpoint).

Parameters
ependpoint whose direct first-level children are handles
timeouttimeout in milliseconds for the select() system call internally used

Definition at line 392 of file endpoint.c.

References DBG_INFO, GWEN_ERROR_INTERRUPTED, GWEN_ERROR_TIMEOUT, GWEN_LOGDOMAIN, GWEN_MsgEndpoint_ChildrenAddSockets(), GWEN_MsgEndpoint_ChildrenCheckSockets(), GWEN_Socket_Select(), GWEN_SocketSet_free(), GWEN_SocketSet_GetSocketCount(), GWEN_SocketSet_new(), and NULL.

Here is the call graph for this function:

◆ GWEN_MsgEndpoint_DelFlags()

GWENHYWFAR_API void GWEN_MsgEndpoint_DelFlags ( GWEN_MSG_ENDPOINT ep,
uint32_t  f 
)

Definition at line 177 of file endpoint.c.

◆ GWEN_MsgEndpoint_DiscardInput()

GWENHYWFAR_API int GWEN_MsgEndpoint_DiscardInput ( GWEN_MSG_ENDPOINT ep)

This function can be used to drain the file descriptor/socket from waiting data. An example is an endpoint implementation from AqHome which uses an USB serial device. When message receiption errors occur (e.g. due to collisions on the data line) the rest of data on the line needs to be discarded because it might belong the the errornous previous message.

Definition at line 460 of file endpoint.c.

References DBG_INFO, GWEN_ERROR_IO, GWEN_ERROR_TIMEOUT, GWEN_LOGDOMAIN, and GWEN_MsgEndpoint_ReadFromSocket().

Here is the call graph for this function:

◆ GWEN_MsgEndpoint_Disconnect()

GWENHYWFAR_API void GWEN_MsgEndpoint_Disconnect ( GWEN_MSG_ENDPOINT ep)

Definition at line 483 of file endpoint.c.

References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MSG_ENDPOINT_STATE_UNCONNECTED, GWEN_MsgEndpoint_SetState(), GWEN_Socket_Close(), GWEN_Socket_free(), and NULL.

Referenced by _addSockets(), _addSocketsWhenConnected(), _addSocketsWhenConnecting(), and _checkSockets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_free()

GWENHYWFAR_API void GWEN_MsgEndpoint_free ( GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetCurrentlyReceivedMsg()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_GetCurrentlyReceivedMsg ( const GWEN_MSG_ENDPOINT ep)

Definition at line 274 of file endpoint.c.

References NULL.

Referenced by _distributeBufferContent().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetDefaultMessageSize()

GWENHYWFAR_API int GWEN_MsgEndpoint_GetDefaultMessageSize ( const GWEN_MSG_ENDPOINT ep)

Definition at line 185 of file endpoint.c.

Referenced by _distributeBufferContent().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetFirstReceivedMessage()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_GetFirstReceivedMessage ( const GWEN_MSG_ENDPOINT ep)

Definition at line 231 of file endpoint.c.

References GWEN_Msg_List_First(), and NULL.

Referenced by GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren(), and GWEN_MsgEndpoint_TakeFirstReceivedMessage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetFirstSendMessage()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_GetFirstSendMessage ( const GWEN_MSG_ENDPOINT ep)

Definition at line 260 of file endpoint.c.

References GWEN_Msg_List_First(), and NULL.

Referenced by _writeCurrentMessage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetFlags()

GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetFlags ( const GWEN_MSG_ENDPOINT ep)

Definition at line 154 of file endpoint.c.

◆ GWEN_MsgEndpoint_GetGroupId()

GWENHYWFAR_API int GWEN_MsgEndpoint_GetGroupId ( const GWEN_MSG_ENDPOINT ep)

Definition at line 97 of file endpoint.c.

Referenced by _distributeBufferContent().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetName()

GWENHYWFAR_API const char* GWEN_MsgEndpoint_GetName ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetNextMessageId()

GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetNextMessageId ( GWEN_MSG_ENDPOINT ep)

Definition at line 200 of file endpoint.c.

◆ GWEN_MsgEndpoint_GetReceivedMessageList()

GWENHYWFAR_API GWEN_MSG_LIST* GWEN_MsgEndpoint_GetReceivedMessageList ( const GWEN_MSG_ENDPOINT ep)

Definition at line 207 of file endpoint.c.

References NULL.

Referenced by _checkSocketsWhenConnected().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetSendMessageList()

GWENHYWFAR_API GWEN_MSG_LIST* GWEN_MsgEndpoint_GetSendMessageList ( const GWEN_MSG_ENDPOINT ep)

Definition at line 214 of file endpoint.c.

References NULL.

Referenced by _addSocketsWhenConnected(), and _checkSocketsWhenConnected().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetSocket()

GWENHYWFAR_API GWEN_SOCKET* GWEN_MsgEndpoint_GetSocket ( const GWEN_MSG_ENDPOINT ep)

Definition at line 104 of file endpoint.c.

References NULL.

Referenced by _addSockets(), and _checkSockets().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_GetState()

GWENHYWFAR_API int GWEN_MsgEndpoint_GetState ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetTimeOfLastStateChange()

GWENHYWFAR_API time_t GWEN_MsgEndpoint_GetTimeOfLastStateChange ( const GWEN_MSG_ENDPOINT ep)

Definition at line 144 of file endpoint.c.

Referenced by _addSockets(), _addSocketsWhenConnecting(), and _checkForNeedToReconnect().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_HaveMessageToSend()

GWENHYWFAR_API int GWEN_MsgEndpoint_HaveMessageToSend ( const GWEN_MSG_ENDPOINT ep)

Definition at line 267 of file endpoint.c.

References GWEN_Msg_List_GetCount().

Referenced by _addSockets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_IoLoop()

GWENHYWFAR_API void GWEN_MsgEndpoint_IoLoop ( GWEN_MSG_ENDPOINT ep,
int  timeout 
)

Does one IO loop which internally does this:

Parameters
ependpoint to handle
timeouttimeout in milliseconds for the GWEN_Socket_Select() call.

Definition at line 360 of file endpoint.c.

References DBG_INFO, GWEN_ERROR_INTERRUPTED, GWEN_ERROR_TIMEOUT, GWEN_LOGDOMAIN, GWEN_MsgEndpoint_AddSockets(), GWEN_MsgEndpoint_CheckSockets(), GWEN_Socket_Select(), GWEN_SocketSet_free(), GWEN_SocketSet_GetSocketCount(), GWEN_SocketSet_new(), and NULL.

Here is the call graph for this function:

◆ GWEN_MsgEndpoint_new()

GWENHYWFAR_API GWEN_MSG_ENDPOINT* GWEN_MsgEndpoint_new ( const char *  name,
int  groupId 
)

Definition at line 31 of file endpoint.c.

References GWEN_INHERIT_INIT, GWEN_MSG_ENDPOINT_DEFAULT_MSGSIZE, GWEN_Msg_List_new(), GWEN_NEW_OBJECT, and GWEN_TREE2_INIT.

Referenced by GWEN_IpcEndpoint_CreateIpcTcpServiceForSocket(), GWEN_MultilayerEndpoint_new(), GWEN_TcpcEndpoint_new(), and GWEN_TcpdEndpoint_new().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_ReadFromSocket()

GWENHYWFAR_API int GWEN_MsgEndpoint_ReadFromSocket ( GWEN_MSG_ENDPOINT ep,
uint8_t *  bufferPtr,
uint32_t  bufferLen 
)

Definition at line 424 of file endpoint.c.

References DBG_DEBUG, DBG_INFO, GWEN_ERROR_INTERRUPTED, GWEN_LOGDOMAIN, GWEN_MsgEndpoint_GetName(), and GWEN_Socket_Read().

Referenced by _readCurrentMessage(), and GWEN_MsgEndpoint_DiscardInput().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren()

GWENHYWFAR_API void GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren ( GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_SetAddSocketsFn()

Definition at line 504 of file endpoint.c.

References NULL.

Referenced by GWEN_MsgIoEndpoint_Extend(), GWEN_MultilayerEndpoint_new(), GWEN_TcpcEndpoint_new(), and GWEN_TcpdEndpoint_new().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_SetCheckSocketsFn()

Definition at line 518 of file endpoint.c.

References NULL.

Referenced by _freeData(), GWEN_MsgIoEndpoint_Extend(), GWEN_MultilayerEndpoint_new(), GWEN_TcpcEndpoint_new(), and GWEN_TcpdEndpoint_new().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_SetCurrentlyReceivedMsg()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetCurrentlyReceivedMsg ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

Definition at line 281 of file endpoint.c.

Referenced by _distributeBufferContent().

Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_SetDefaultMessageSize()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetDefaultMessageSize ( GWEN_MSG_ENDPOINT ep,
int  i 
)

Definition at line 192 of file endpoint.c.

◆ GWEN_MsgEndpoint_SetFlags()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetFlags ( GWEN_MSG_ENDPOINT ep,
uint32_t  f 
)

Definition at line 161 of file endpoint.c.

◆ GWEN_MsgEndpoint_SetSocket()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetSocket ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKET sk 
)

Definition at line 111 of file endpoint.c.

References GWEN_Socket_Close(), and GWEN_Socket_free().

Referenced by _startConnect(), _startListen(), and GWEN_IpcEndpoint_CreateIpcTcpServiceForSocket().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MsgEndpoint_SetState()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetState ( GWEN_MSG_ENDPOINT ep,
int  m 
)

◆ GWEN_MsgEndpoint_TakeFirstReceivedMessage()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_TakeFirstReceivedMessage ( GWEN_MSG_ENDPOINT ep)

Definition at line 238 of file endpoint.c.

References GWEN_Msg_List_Del(), and GWEN_MsgEndpoint_GetFirstReceivedMessage().

Here is the call graph for this function:

◆ GWEN_MsgEndpoint_WriteToSocket()

GWENHYWFAR_API int GWEN_MsgEndpoint_WriteToSocket ( GWEN_MSG_ENDPOINT ep,
const uint8_t *  bufferPtr,
uint32_t  bufferLen 
)

Definition at line 444 of file endpoint.c.

References GWEN_ERROR_INTERRUPTED, and GWEN_Socket_Write().

Referenced by _writeCurrentMessage().

Here is the call graph for this function:
Here is the caller graph for this function: