gwenhywfar  5.11.1beta
Macros | Typedefs | Functions
endpoint.h File Reference
#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). More...
 
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_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 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)
 

Macro Definition Documentation

◆ GWEN_MSG_ENDPOINT_FLAGS_DELETE

#define GWEN_MSG_ENDPOINT_FLAGS_DELETE   0x80000000u

Definition at line 19 of file endpoint.h.

◆ GWEN_MSG_ENDPOINT_FLAGS_NOIO

#define GWEN_MSG_ENDPOINT_FLAGS_NOIO   0x40000000u

Definition at line 20 of file endpoint.h.

◆ GWEN_MSG_ENDPOINT_STATE_CONNECTED

#define GWEN_MSG_ENDPOINT_STATE_CONNECTED   2

Definition at line 25 of file endpoint.h.

◆ GWEN_MSG_ENDPOINT_STATE_CONNECTING

#define GWEN_MSG_ENDPOINT_STATE_CONNECTING   1

Definition at line 24 of file endpoint.h.

◆ GWEN_MSG_ENDPOINT_STATE_UNCONNECTED

#define GWEN_MSG_ENDPOINT_STATE_UNCONNECTED   0

Definition at line 23 of file endpoint.h.

Typedef Documentation

◆ GWEN_MSG_ENDPOINT

Object which can send and receive messages (base class).

Definition at line 1 of file endpoint.h.

◆ 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 
)

◆ GWEN_MsgEndpoint_AddReceivedMessage()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddReceivedMessage ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

◆ GWEN_MsgEndpoint_AddSendMessage()

GWENHYWFAR_API void GWEN_MsgEndpoint_AddSendMessage ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

◆ GWEN_MsgEndpoint_AddSockets()

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

◆ GWEN_MsgEndpoint_CheckSockets()

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

◆ GWEN_MsgEndpoint_ChildrenAddSockets()

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

◆ GWEN_MsgEndpoint_ChildrenCheckSockets()

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

◆ 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

◆ GWEN_MsgEndpoint_DelFlags()

GWENHYWFAR_API void GWEN_MsgEndpoint_DelFlags ( GWEN_MSG_ENDPOINT ep,
uint32_t  f 
)

◆ 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.

◆ GWEN_MsgEndpoint_Disconnect()

GWENHYWFAR_API void GWEN_MsgEndpoint_Disconnect ( GWEN_MSG_ENDPOINT ep)

◆ 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)

◆ GWEN_MsgEndpoint_GetDefaultMessageSize()

GWENHYWFAR_API int GWEN_MsgEndpoint_GetDefaultMessageSize ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetFirstReceivedMessage()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_GetFirstReceivedMessage ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetFirstSendMessage()

GWENHYWFAR_API GWEN_MSG* GWEN_MsgEndpoint_GetFirstSendMessage ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetFlags()

GWENHYWFAR_API uint32_t GWEN_MsgEndpoint_GetFlags ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetGroupId()

GWENHYWFAR_API int GWEN_MsgEndpoint_GetGroupId ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetName()

GWENHYWFAR_API const char* GWEN_MsgEndpoint_GetName ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetReceivedMessageList()

GWENHYWFAR_API GWEN_MSG_LIST* GWEN_MsgEndpoint_GetReceivedMessageList ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetSendMessageList()

GWENHYWFAR_API GWEN_MSG_LIST* GWEN_MsgEndpoint_GetSendMessageList ( const GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_GetSocket()

GWENHYWFAR_API GWEN_SOCKET* GWEN_MsgEndpoint_GetSocket ( const GWEN_MSG_ENDPOINT ep)

◆ 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)

◆ GWEN_MsgEndpoint_HaveMessageToSend()

GWENHYWFAR_API int GWEN_MsgEndpoint_HaveMessageToSend ( const GWEN_MSG_ENDPOINT ep)

◆ 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.

◆ GWEN_MsgEndpoint_new()

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

◆ GWEN_MsgEndpoint_ReadFromSocket()

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

◆ GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren()

GWENHYWFAR_API void GWEN_MsgEndpoint_RemoveUnconnectedAndEmptyChildren ( GWEN_MSG_ENDPOINT ep)

◆ GWEN_MsgEndpoint_SetAddSocketsFn()

◆ GWEN_MsgEndpoint_SetCheckSocketsFn()

◆ GWEN_MsgEndpoint_SetCurrentlyReceivedMsg()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetCurrentlyReceivedMsg ( GWEN_MSG_ENDPOINT ep,
GWEN_MSG m 
)

◆ GWEN_MsgEndpoint_SetDefaultMessageSize()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetDefaultMessageSize ( GWEN_MSG_ENDPOINT ep,
int  i 
)

◆ GWEN_MsgEndpoint_SetFlags()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetFlags ( GWEN_MSG_ENDPOINT ep,
uint32_t  f 
)

◆ GWEN_MsgEndpoint_SetSocket()

GWENHYWFAR_API void GWEN_MsgEndpoint_SetSocket ( GWEN_MSG_ENDPOINT ep,
GWEN_SOCKET sk 
)

◆ 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)

◆ GWEN_MsgEndpoint_WriteToSocket()

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