|
gwenhywfar 5.11.2beta
|
#include <gwenhywfar/inherit.h>#include <gwenhywfar/tree2.h>#include <gwenhywfar/inetsocket.h>#include <gwenhywfar/msg.h>#include <time.h>
Go to the source code of this file.
Macros | |
| #define | GWEN_MSG_ENDPOINT_FLAGS_DELETE 0x80000000u |
| #define | GWEN_MSG_ENDPOINT_FLAGS_NOIO 0x40000000u |
| #define | GWEN_MSG_ENDPOINT_STATE_CONNECTED 2 |
| #define | GWEN_MSG_ENDPOINT_STATE_CONNECTING 1 |
| #define | GWEN_MSG_ENDPOINT_STATE_UNCONNECTED 0 |
Typedefs | |
| typedef struct GWEN_MSG_ENDPOINT | GWEN_MSG_ENDPOINT |
| Object which can send and receive messages (base class). | |
| 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) |
| #define GWEN_MSG_ENDPOINT_FLAGS_DELETE 0x80000000u |
Definition at line 19 of file endpoint.h.
| #define GWEN_MSG_ENDPOINT_FLAGS_NOIO 0x40000000u |
Definition at line 20 of file endpoint.h.
| #define GWEN_MSG_ENDPOINT_STATE_CONNECTED 2 |
Definition at line 25 of file endpoint.h.
Referenced by _addSockets(), _addSockets(), _addSockets(), _addSockets(), _checkSockets(), _checkSockets(), _checkSockets(), _checkSockets(), GWEN_TcpcEndpoint_StartConnect(), and GWEN_TcpdEndpoint_StartListening().
| #define GWEN_MSG_ENDPOINT_STATE_CONNECTING 1 |
Definition at line 24 of file endpoint.h.
Referenced by _addSockets(), _addSockets(), _checkSockets(), _checkSockets(), GWEN_MultilayerEndpoint_StartConnect(), and GWEN_TcpcEndpoint_StartConnect().
| #define GWEN_MSG_ENDPOINT_STATE_UNCONNECTED 0 |
Definition at line 23 of file endpoint.h.
Referenced by _addSockets(), _addSockets(), _addSockets(), _addSocketsWhenConnected(), _addSocketsWhenConnecting(), _checkSockets(), GWEN_MsgEndpoint_Disconnect(), GWEN_MsgEndpoint_GetState(), GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren(), GWEN_MultilayerEndpoint_StartConnect(), GWEN_TcpcEndpoint_new(), GWEN_TcpcEndpoint_StartConnect(), GWEN_TcpdEndpoint_new(), and GWEN_TcpdEndpoint_StartListening().
| typedef struct GWEN_MSG_ENDPOINT GWEN_MSG_ENDPOINT |
Object which can send and receive messages (base class).
Definition at line 37 of file endpoint.h.
| 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.
| 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.
| GWENHYWFAR_API void GWEN_MsgEndpoint_AddFlags | ( | GWEN_MSG_ENDPOINT * | ep, |
| uint32_t | f ) |
Definition at line 155 of file endpoint.c.
| GWENHYWFAR_API void GWEN_MsgEndpoint_AddReceivedMessage | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_MSG * | m ) |
Definition at line 200 of file endpoint.c.
References GWEN_Msg_List_Add(), and GWEN_Msg_RewindCurrentPos().
Referenced by _distributeBufferContent().


| GWENHYWFAR_API void GWEN_MsgEndpoint_AddSendMessage | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_MSG * | m ) |
Definition at line 229 of file endpoint.c.
References GWEN_Msg_List_Add(), and GWEN_Msg_RewindCurrentPos().

| GWENHYWFAR_API void GWEN_MsgEndpoint_AddSockets | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_SOCKETSET * | readSet, | ||
| GWEN_SOCKETSET * | writeSet, | ||
| GWEN_SOCKETSET * | xSet ) |
Definition at line 268 of file endpoint.c.
Referenced by _addSocketsWhenConnected(), _addSocketsWhenConnecting(), GWEN_MsgEndpoint_ChildrenAddSockets(), and GWEN_MsgEndpoint_IoLoop().

| GWENHYWFAR_API void GWEN_MsgEndpoint_CheckSockets | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_SOCKETSET * | readSet, | ||
| GWEN_SOCKETSET * | writeSet, | ||
| GWEN_SOCKETSET * | xSet ) |
Definition at line 276 of file endpoint.c.
Referenced by _checkSocketsWhenConnected(), _checkSocketsWhenConnecting(), GWEN_MsgEndpoint_ChildrenCheckSockets(), and GWEN_MsgEndpoint_IoLoop().

| GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenAddSockets | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_SOCKETSET * | readSet, | ||
| GWEN_SOCKETSET * | writeSet, | ||
| GWEN_SOCKETSET * | xSet ) |
Definition at line 284 of file endpoint.c.
References GWEN_MsgEndpoint_AddSockets().
Referenced by _addSockets(), and GWEN_MsgEndpoint_ChildrenIoLoop().


| GWENHYWFAR_API void GWEN_MsgEndpoint_ChildrenCheckSockets | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_SOCKETSET * | readSet, | ||
| GWEN_SOCKETSET * | writeSet, | ||
| GWEN_SOCKETSET * | xSet ) |
Definition at line 300 of file endpoint.c.
References GWEN_MsgEndpoint_CheckSockets().
Referenced by _checkSockets(), and 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).
| ep | endpoint whose direct first-level children are handles |
| timeout | timeout in milliseconds for the select() system call internally used |
Definition at line 371 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.

| GWENHYWFAR_API void GWEN_MsgEndpoint_DelFlags | ( | GWEN_MSG_ENDPOINT * | ep, |
| uint32_t | f ) |
Definition at line 163 of file endpoint.c.
| 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 439 of file endpoint.c.
References DBG_INFO, GWEN_ERROR_IO, GWEN_ERROR_TIMEOUT, GWEN_LOGDOMAIN, and GWEN_MsgEndpoint_ReadFromSocket().

| GWENHYWFAR_API void GWEN_MsgEndpoint_Disconnect | ( | GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 462 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(), _checkSockets(), and _checkSockets().


| GWENHYWFAR_API void GWEN_MsgEndpoint_free | ( | GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 52 of file endpoint.c.
References DBG_INFO, GWEN_FREE_OBJECT, GWEN_INHERIT_FINI, GWEN_LOGDOMAIN, GWEN_Msg_free(), GWEN_Msg_List_free(), GWEN_Msg_List_GetCount(), GWEN_Socket_Close(), GWEN_Socket_free(), and GWEN_TREE2_FINI.
Referenced by GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren().


| GWENHYWFAR_API GWEN_MSG * GWEN_MsgEndpoint_GetCurrentlyReceivedMsg | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 253 of file endpoint.c.
References NULL.
Referenced by _distributeBufferContent().

| GWENHYWFAR_API int GWEN_MsgEndpoint_GetDefaultMessageSize | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 171 of file endpoint.c.
Referenced by _distributeBufferContent().

| GWENHYWFAR_API GWEN_MSG * GWEN_MsgEndpoint_GetFirstReceivedMessage | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 210 of file endpoint.c.
References GWEN_Msg_List_First(), and NULL.
Referenced by GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren(), and GWEN_MsgEndpoint_TakeFirstReceivedMessage().


| GWENHYWFAR_API GWEN_MSG * GWEN_MsgEndpoint_GetFirstSendMessage | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 239 of file endpoint.c.
References GWEN_Msg_List_First(), and NULL.
Referenced by _writeCurrentMessage().


| GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetFlags | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 140 of file endpoint.c.
| GWENHYWFAR_API int GWEN_MsgEndpoint_GetGroupId | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 83 of file endpoint.c.
Referenced by _distributeBufferContent().

| GWENHYWFAR_API const char * GWEN_MsgEndpoint_GetName | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 76 of file endpoint.c.
References NULL.
Referenced by _addSockets(), _addSockets(), _checkSockets(), _checkSockets(), _checkSockets(), _distributeBufferContent(), _readCurrentMessage(), _writeCurrentMessage(), GWEN_MsgEndpoint_ReadFromSocket(), GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren(), GWEN_MsgEndpoint_SetState(), GWEN_MultilayerEndpoint_StartConnect(), GWEN_TcpcEndpoint_StartConnect(), and GWEN_TcpdEndpoint_StartListening().

| GWENHYWFAR_API GWEN_MSG_LIST * GWEN_MsgEndpoint_GetReceivedMessageList | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 186 of file endpoint.c.
References NULL.
Referenced by _checkSocketsWhenConnected().

| GWENHYWFAR_API GWEN_MSG_LIST * GWEN_MsgEndpoint_GetSendMessageList | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 193 of file endpoint.c.
References NULL.
Referenced by _addSocketsWhenConnected(), and _checkSocketsWhenConnected().

| GWENHYWFAR_API GWEN_SOCKET * GWEN_MsgEndpoint_GetSocket | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 90 of file endpoint.c.
References NULL.
Referenced by _addSockets(), _addSockets(), _addSockets(), _checkSockets(), _checkSockets(), and _checkSockets().

| GWENHYWFAR_API int GWEN_MsgEndpoint_GetState | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 110 of file endpoint.c.
References GWEN_MSG_ENDPOINT_STATE_UNCONNECTED.
Referenced by _addSockets(), _addSockets(), _addSockets(), _addSockets(), _addSocketsWhenConnected(), _addSocketsWhenConnecting(), _checkSockets(), _checkSockets(), _checkSockets(), GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren(), GWEN_MultilayerEndpoint_StartConnect(), GWEN_TcpcEndpoint_StartConnect(), and GWEN_TcpdEndpoint_StartListening().

| GWENHYWFAR_API time_t GWEN_MsgEndpoint_GetTimeOfLastStateChange | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 130 of file endpoint.c.
Referenced by _addSockets(), _addSocketsWhenConnecting(), and _checkForNeedToReconnect().

| GWENHYWFAR_API int GWEN_MsgEndpoint_HaveMessageToSend | ( | const GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 246 of file endpoint.c.
References GWEN_Msg_List_GetCount().
Referenced by _addSockets(), and _addSockets().


| GWENHYWFAR_API void GWEN_MsgEndpoint_IoLoop | ( | GWEN_MSG_ENDPOINT * | ep, |
| int | timeout ) |
Does one IO loop which internally does this:
| ep | endpoint to handle |
| timeout | timeout in milliseconds for the GWEN_Socket_Select() call. |
Definition at line 339 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.

| 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().


| GWENHYWFAR_API int GWEN_MsgEndpoint_ReadFromSocket | ( | GWEN_MSG_ENDPOINT * | ep, |
| uint8_t * | bufferPtr, | ||
| uint32_t | bufferLen ) |
Definition at line 403 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().


| GWENHYWFAR_API void GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren | ( | GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 316 of file endpoint.c.
References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MSG_ENDPOINT_STATE_UNCONNECTED, GWEN_MsgEndpoint_free(), GWEN_MsgEndpoint_GetFirstReceivedMessage(), GWEN_MsgEndpoint_GetName(), GWEN_MsgEndpoint_GetState(), and NULL.

| GWENHYWFAR_API GWEN_MSG_ENDPOINT_ADDSOCKETS_FN GWEN_MsgEndpoint_SetAddSocketsFn | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_MSG_ENDPOINT_ADDSOCKETS_FN | fn ) |
Definition at line 483 of file endpoint.c.
References NULL.
Referenced by GWEN_MsgIoEndpoint_Extend(), GWEN_MultilayerEndpoint_new(), GWEN_TcpcEndpoint_new(), and GWEN_TcpdEndpoint_new().

| GWENHYWFAR_API GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN GWEN_MsgEndpoint_SetCheckSocketsFn | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_MSG_ENDPOINT_CHECKSOCKETS_FN | fn ) |
Definition at line 497 of file endpoint.c.
References NULL.
Referenced by _freeData(), GWEN_MsgIoEndpoint_Extend(), GWEN_MultilayerEndpoint_new(), GWEN_TcpcEndpoint_new(), and GWEN_TcpdEndpoint_new().

| GWENHYWFAR_API void GWEN_MsgEndpoint_SetCurrentlyReceivedMsg | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_MSG * | m ) |
Definition at line 260 of file endpoint.c.
Referenced by _distributeBufferContent().

| GWENHYWFAR_API void GWEN_MsgEndpoint_SetDefaultMessageSize | ( | GWEN_MSG_ENDPOINT * | ep, |
| int | i ) |
Definition at line 178 of file endpoint.c.
| GWENHYWFAR_API void GWEN_MsgEndpoint_SetFlags | ( | GWEN_MSG_ENDPOINT * | ep, |
| uint32_t | f ) |
Definition at line 147 of file endpoint.c.
| GWENHYWFAR_API void GWEN_MsgEndpoint_SetSocket | ( | GWEN_MSG_ENDPOINT * | ep, |
| GWEN_SOCKET * | sk ) |
Definition at line 97 of file endpoint.c.
References GWEN_Socket_Close(), and GWEN_Socket_free().
Referenced by _startConnect(), _startListen(), and GWEN_IpcEndpoint_CreateIpcTcpServiceForSocket().


| GWENHYWFAR_API void GWEN_MsgEndpoint_SetState | ( | GWEN_MSG_ENDPOINT * | ep, |
| int | m ) |
Definition at line 117 of file endpoint.c.
References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEndpoint_GetName(), and NULL.
Referenced by _addSockets(), _checkSockets(), _checkSockets(), GWEN_MsgEndpoint_Disconnect(), GWEN_MultilayerEndpoint_StartConnect(), GWEN_TcpcEndpoint_new(), GWEN_TcpcEndpoint_StartConnect(), GWEN_TcpdEndpoint_new(), and GWEN_TcpdEndpoint_StartListening().


| GWENHYWFAR_API GWEN_MSG * GWEN_MsgEndpoint_TakeFirstReceivedMessage | ( | GWEN_MSG_ENDPOINT * | ep | ) |
Definition at line 217 of file endpoint.c.
References GWEN_Msg_List_Del(), and GWEN_MsgEndpoint_GetFirstReceivedMessage().

| GWENHYWFAR_API int GWEN_MsgEndpoint_WriteToSocket | ( | GWEN_MSG_ENDPOINT * | ep, |
| const uint8_t * | bufferPtr, | ||
| uint32_t | bufferLen ) |
Definition at line 423 of file endpoint.c.
References GWEN_ERROR_INTERRUPTED, and GWEN_Socket_Write().
Referenced by _writeCurrentMessage().

