gwenhywfar  5.14.1
msg.h
Go to the documentation of this file.
1 /****************************************************************************
2  * This file is part of the project Gwenhywfar.
3  * Gwenhywfar (c) by 2023 Martin Preuss, all rights reserved.
4  *
5  * The license for this file can be found in the file COPYING which you
6  * should have received along with this file.
7  ****************************************************************************/
8 
9 #ifndef GWEN_MSG_MSG_H
10 #define GWEN_MSG_MSG_H
11 
12 
13 #include <gwenhywfar/list.h>
14 #include <gwenhywfar/inherit.h>
15 #include <gwenhywfar/buffer.h>
16 #include <gwenhywfar/db.h>
17 
18 
19 
20 #define GWEN_MSG_FLAGS_PAYLOADINFO_SET 0x80000000u
21 
22 
23 
24 typedef struct GWEN_MSG GWEN_MSG;
27 
28 
29 
30 GWENHYWFAR_API GWEN_MSG *GWEN_Msg_new(uint32_t bufferSize);
31 GWENHYWFAR_API GWEN_MSG *GWEN_Msg_fromBytes(const uint8_t *ptr, uint32_t len);
32 
36 
38 GWENHYWFAR_API void GWEN_Msg_SetGroupId(GWEN_MSG *msg, int groupId);
39 
40 GWENHYWFAR_API uint32_t GWEN_Msg_GetMaxSize(const GWEN_MSG *msg);
42 GWENHYWFAR_API const uint8_t *GWEN_Msg_GetConstBuffer(const GWEN_MSG *msg);
46 GWENHYWFAR_API int GWEN_Msg_AddByte(GWEN_MSG *msg, uint8_t b);
47 GWENHYWFAR_API int GWEN_Msg_AddBytes(GWEN_MSG *msg, const uint8_t *bufferPtr, uint32_t bufferLen);
49 GWENHYWFAR_API int GWEN_Msg_IncCurrentPos(GWEN_MSG *msg, uint32_t i);
52 
53 
61 
64 
67 
71 GWENHYWFAR_API uint32_t GWEN_Msg_GetFlags(const GWEN_MSG *msg);
72 GWENHYWFAR_API void GWEN_Msg_SetFlags(GWEN_MSG *msg, uint32_t f);
73 GWENHYWFAR_API void GWEN_Msg_AddFlags(GWEN_MSG *msg, uint32_t f);
74 GWENHYWFAR_API void GWEN_Msg_DelFlags(GWEN_MSG *msg, uint32_t f);
75 
76 
77 GWENHYWFAR_API uint64_t GWEN_Msg_GetUint64At(const GWEN_MSG *msg, int offs, uint64_t defaultValue);
78 GWENHYWFAR_API uint32_t GWEN_Msg_GetUint32At(const GWEN_MSG *msg, int offs, uint32_t defaultValue);
79 GWENHYWFAR_API uint16_t GWEN_Msg_GetUint16At(const GWEN_MSG *msg, int offs, uint16_t defaultValue);
80 GWENHYWFAR_API uint8_t GWEN_Msg_GetUint8At(const GWEN_MSG *msg, int offs, uint8_t defaultValue);
81 
82 GWENHYWFAR_API int GWEN_Msg_WriteUint64At(GWEN_MSG *msg, uint32_t pos, uint64_t v);
83 GWENHYWFAR_API int GWEN_Msg_WriteUint32At(GWEN_MSG *msg, uint32_t pos, uint32_t v);
84 GWENHYWFAR_API int GWEN_Msg_WriteUint16At(GWEN_MSG *msg, uint32_t pos, uint16_t v);
85 GWENHYWFAR_API int GWEN_Msg_WriteUint8At(GWEN_MSG *msg, uint32_t pos, uint8_t v);
86 GWENHYWFAR_API int GWEN_Msg_WriteBytesAt(GWEN_MSG *msg, uint32_t pos, const uint8_t *bufferPtr, uint32_t bufferLen);
87 
88 
89 GWENHYWFAR_API int GWEN_Msg_AddUint64(GWEN_MSG *msg, uint64_t v);
90 GWENHYWFAR_API int GWEN_Msg_AddUint32(GWEN_MSG *msg, uint32_t v);
91 GWENHYWFAR_API int GWEN_Msg_AddUint16(GWEN_MSG *msg, uint16_t v);
92 GWENHYWFAR_API int GWEN_Msg_AddUint8(GWEN_MSG *msg, uint8_t v);
93 GWENHYWFAR_API int GWEN_Msg_AddString(GWEN_MSG *msg, const char *s, uint32_t maxSize, uint8_t filler);
94 GWENHYWFAR_API int GWEN_Msg_AddStringWithTrailingNull(GWEN_MSG *msg, const char *s, uint32_t maxSize, uint8_t filler);
95 
96 
97 GWENHYWFAR_API void GWEN_Msg_Dump(const GWEN_MSG *msg, GWEN_BUFFER *buf);
98 
99 
100 #endif
101 
102 
GWENHYWFAR_API void GWEN_Msg_free(GWEN_MSG *msg)
Definition: msg.c:78
GWENHYWFAR_API int GWEN_Msg_AddString(GWEN_MSG *msg, const char *s, uint32_t maxSize, uint8_t filler)
Definition: msg.c:404
GWENHYWFAR_API int GWEN_Msg_WriteUint8At(GWEN_MSG *msg, uint32_t pos, uint8_t v)
Definition: msg.c:278
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
GWENHYWFAR_API uint32_t GWEN_Msg_GetFlags(const GWEN_MSG *msg)
Definition: msg.c:536
GWENHYWFAR_API int GWEN_Msg_ReadNextByte(GWEN_MSG *msg)
Definition: msg.c:455
GWENHYWFAR_API void GWEN_Msg_Dump(const GWEN_MSG *msg, GWEN_BUFFER *buf)
Definition: msg.c:646
GWENHYWFAR_API int GWEN_Msg_RewindCurrentPos(GWEN_MSG *msg)
Definition: msg.c:482
GWENHYWFAR_API int GWEN_Msg_AddUint64(GWEN_MSG *msg, uint64_t v)
Definition: msg.c:320
GWENHYWFAR_API int GWEN_Msg_AddStringWithTrailingNull(GWEN_MSG *msg, const char *s, uint32_t maxSize, uint8_t filler)
Definition: msg.c:428
GWENHYWFAR_API uint32_t GWEN_Msg_GetParsedPayloadSize(const GWEN_MSG *msg)
Definition: msg.c:502
GWENHYWFAR_API int GWEN_Msg_AddUint16(GWEN_MSG *msg, uint16_t v)
Definition: msg.c:362
GWENHYWFAR_API int GWEN_Msg_WriteUint32At(GWEN_MSG *msg, uint32_t pos, uint32_t v)
Definition: msg.c:236
GWENHYWFAR_API void GWEN_Msg_Attach(GWEN_MSG *msg)
Definition: msg.c:70
GWENHYWFAR_API GWEN_MSG * GWEN_Msg_dup(const GWEN_MSG *srcMsg)
Definition: msg.c:95
GWENHYWFAR_API uint32_t GWEN_Msg_GetBytesInBuffer(const GWEN_MSG *msg)
Definition: msg.c:151
GWENHYWFAR_API void GWEN_Msg_AddFlags(GWEN_MSG *msg, uint32_t f)
Definition: msg.c:553
GWENHYWFAR_API void GWEN_Msg_SetParsedPayloadOffset(GWEN_MSG *msg, uint32_t v)
Definition: msg.c:528
GWENHYWFAR_API void GWEN_Msg_SetFlags(GWEN_MSG *msg, uint32_t f)
Definition: msg.c:545
#define GWEN_INHERIT_FUNCTION_LIB_DEFS(t, decl)
Definition: inherit.h:125
GWENHYWFAR_API void GWEN_Msg_DelFlags(GWEN_MSG *msg, uint32_t f)
Definition: msg.c:561
GWENHYWFAR_API void GWEN_Msg_SetDbParsedInfo(GWEN_MSG *msg, GWEN_DB_NODE *db)
Definition: msg.c:578
GWENHYWFAR_API int GWEN_Msg_GetRemainingBytes(const GWEN_MSG *msg)
Definition: msg.c:493
GWENHYWFAR_API int GWEN_Msg_AddBytes(GWEN_MSG *msg, const uint8_t *bufferPtr, uint32_t bufferLen)
Definition: msg.c:193
GWENHYWFAR_API void GWEN_Msg_SetGroupId(GWEN_MSG *msg, int groupId)
Definition: msg.c:126
GWENHYWFAR_API int GWEN_Msg_WriteUint16At(GWEN_MSG *msg, uint32_t pos, uint16_t v)
Definition: msg.c:257
GWENHYWFAR_API const uint8_t * GWEN_Msg_GetConstBuffer(const GWEN_MSG *msg)
Definition: msg.c:142
GWENHYWFAR_API int GWEN_Msg_AddUint32(GWEN_MSG *msg, uint32_t v)
Definition: msg.c:341
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
GWENHYWFAR_API void GWEN_Msg_SetParsedPayloadSize(GWEN_MSG *msg, uint32_t v)
Definition: msg.c:511
#define GWENHYWFAR_API
Definition: gwenhywfarapi.h:67
#define GWEN_LIST_FUNCTION_LIB_DEFS(t, pr, decl)
Definition: list1.h:349
GWENHYWFAR_API uint8_t GWEN_Msg_GetUint8At(const GWEN_MSG *msg, int offs, uint8_t defaultValue)
Definition: msg.c:631
GWENHYWFAR_API int GWEN_Msg_WriteBytesAt(GWEN_MSG *msg, uint32_t pos, const uint8_t *bufferPtr, uint32_t bufferLen)
Definition: msg.c:299
GWENHYWFAR_API int GWEN_Msg_IncCurrentPos(GWEN_MSG *msg, uint32_t i)
Definition: msg.c:468
GWENHYWFAR_API GWEN_DB_NODE * GWEN_Msg_GetDbParsedInfo(const GWEN_MSG *msg)
Definition: msg.c:569
struct GWEN_MSG GWEN_MSG
Definition: msg.h:24
GWENHYWFAR_API uint16_t GWEN_Msg_GetUint16At(const GWEN_MSG *msg, int offs, uint16_t defaultValue)
Definition: msg.c:617
GWENHYWFAR_API void GWEN_Msg_SetBytesInBuffer(GWEN_MSG *msg, uint32_t i)
Definition: msg.c:161
GWENHYWFAR_API GWEN_MSG * GWEN_Msg_new(uint32_t bufferSize)
Definition: msg.c:37
GWENHYWFAR_API uint32_t GWEN_Msg_GetMaxSize(const GWEN_MSG *msg)
Definition: msg.c:169
GWENHYWFAR_API int GWEN_Msg_AddUint8(GWEN_MSG *msg, uint8_t v)
Definition: msg.c:383
GWENHYWFAR_API GWEN_MSG * GWEN_Msg_fromBytes(const uint8_t *ptr, uint32_t len)
Definition: msg.c:54
GWENHYWFAR_API int GWEN_Msg_WriteUint64At(GWEN_MSG *msg, uint32_t pos, uint64_t v)
Definition: msg.c:215
GWENHYWFAR_API int GWEN_Msg_AddByte(GWEN_MSG *msg, uint8_t b)
Definition: msg.c:186
GWENHYWFAR_API int GWEN_Msg_GetGroupId(const GWEN_MSG *msg)
Definition: msg.c:119
GWENHYWFAR_API uint32_t GWEN_Msg_GetParsedPayloadOffset(const GWEN_MSG *msg)
Definition: msg.c:519
GWENHYWFAR_API uint32_t GWEN_Msg_GetUint32At(const GWEN_MSG *msg, int offs, uint32_t defaultValue)
Definition: msg.c:603
GWENHYWFAR_API uint64_t GWEN_Msg_GetUint64At(const GWEN_MSG *msg, int offs, uint64_t defaultValue)
Definition: msg.c:589
GWENHYWFAR_API uint8_t * GWEN_Msg_GetBuffer(GWEN_MSG *msg)
Definition: msg.c:133
GWENHYWFAR_API uint32_t GWEN_Msg_GetCurrentPos(const GWEN_MSG *msg)
Definition: msg.c:176