typedef struct GWEN__MSGENGINE GWEN_MSGENGINE |
Definition at line 131 of file msgengine.h.
typedef int(* GWEN_MSGENGINE_BINTYPEREAD_PTR)(GWEN_MSGENGINE *e, GWEN_XMLNODE *node, GWEN_DB_NODE *gr, GWEN_BUFFER *vbuf) |
Definition at line 164 of file msgengine.h.
typedef int(* GWEN_MSGENGINE_BINTYPEWRITE_PTR)(GWEN_MSGENGINE *e, GWEN_XMLNODE *node, GWEN_DB_NODE *gr, GWEN_BUFFER *dbuf) |
Definition at line 169 of file msgengine.h.
typedef void(* GWEN_MSGENGINE_FREEDATA_PTR)(GWEN_MSGENGINE *e) |
Definition at line 187 of file msgengine.h.
typedef const char*(* GWEN_MSGENGINE_GETCHARVALUE_PTR)(GWEN_MSGENGINE *e, const char *name, const char *defValue) |
Get the value of the given name (or default value if none set)
Definition at line 177 of file msgengine.h.
typedef GWEN_DB_NODE*(* GWEN_MSGENGINE_GETGLOBALVALUES_PTR)(GWEN_MSGENGINE *e) |
Definition at line 185 of file msgengine.h.
typedef int(* GWEN_MSGENGINE_GETINTVALUE_PTR)(GWEN_MSGENGINE *e, const char *name, int defValue) |
Definition at line 180 of file msgengine.h.
typedef GWEN_DB_NODE_TYPE(* GWEN_MSGENGINE_TYPECHECK_PTR)(GWEN_MSGENGINE *e, const char *tname) |
Checks of what base-type the given type is.
Definition at line 161 of file msgengine.h.
typedef int(* GWEN_MSGENGINE_TYPEREAD_PTR)(GWEN_MSGENGINE *e, GWEN_BUFFER *msgbuf, GWEN_XMLNODE *node, GWEN_BUFFER *vbuf, char escapeChar, const char *delimiters) |
Definition at line 143 of file msgengine.h.
typedef int(* GWEN_MSGENGINE_TYPEWRITE_PTR)(GWEN_MSGENGINE *e, GWEN_BUFFER *gbuf, GWEN_BUFFER *data, GWEN_XMLNODE *node) |
Definition at line 153 of file msgengine.h.
GWENHYWFAR_API int GWEN_MsgEngine_AddDefinitions | ( | GWEN_MSGENGINE * | e, | |
GWEN_XMLNODE * | node | |||
) |
Definition at line 2060 of file msgengine.c.
References DBG_DEBUG, GWEN_LOGDOMAIN, GWEN_XMLNode_AddChild(), GWEN_XMLNode_dup(), GWEN_XMLNode_FindNode(), GWEN_XMLNode_GetChild(), GWEN_XMLNode_GetData(), GWEN_XMLNode_GetType(), GWEN_XMLNode_Next(), and GWEN_XMLNodeTypeTag.
GWENHYWFAR_API int GWEN_MsgEngine_AddTrustInfo | ( | GWEN_MSGENGINE * | e, | |
const char * | data, | |||
unsigned int | size, | |||
const char * | description, | |||
GWEN_MSGENGINE_TRUSTLEVEL | trustLevel, | |||
unsigned int | pos | |||
) |
Definition at line 3918 of file msgengine.c.
References DBG_INFO, GWEN_LIST_ADD, GWEN_LOGDOMAIN, GWEN_MsgEngine_TrustedData_AddPos(), and GWEN_MsgEngine_TrustedData_new().
Referenced by GWEN_MsgEngine__ReadValue(), and GWEN_MsgEngine_ReadMessage().
GWENHYWFAR_API void GWEN_MsgEngine_Attach | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 94 of file msgengine.c.
GWENHYWFAR_API int GWEN_MsgEngine_CreateMessage | ( | GWEN_MSGENGINE * | e, | |
const char * | msgName, | |||
int | msgVersion, | |||
GWEN_BUFFER * | gbuf, | |||
GWEN_DB_NODE * | msgData | |||
) |
Definition at line 2040 of file msgengine.c.
References DBG_ERROR, GWEN_LOGDOMAIN, GWEN_MsgEngine_CreateMessageFromNode(), and GWEN_MsgEngine_FindGroupByProperty().
GWENHYWFAR_API int GWEN_MsgEngine_CreateMessageFromNode | ( | GWEN_MSGENGINE * | e, | |
GWEN_XMLNODE * | node, | |||
GWEN_BUFFER * | gbuf, | |||
GWEN_DB_NODE * | msgData | |||
) |
Definition at line 2001 of file msgengine.c.
References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEngine__WriteGroup(), GWEN_XMLNode_GetData(), GWEN_XMLNode_Path_Dive(), GWEN_XMLNode_Path_free(), and GWEN_XMLNode_Path_new().
Referenced by GWEN_MsgEngine_CreateMessage().
GWENHYWFAR_API GWEN_XMLNODE* GWEN_MsgEngine_FindGroupByProperty | ( | GWEN_MSGENGINE * | e, | |
const char * | pname, | |||
int | version, | |||
const char * | pvalue | |||
) |
Definition at line 910 of file msgengine.c.
References GWEN_MsgEngine_FindNodeByProperty().
Referenced by GWEN_MsgEngine_CreateMessage(), and GWEN_MsgEngine_ReadMessage().
GWENHYWFAR_API GWEN_XMLNODE* GWEN_MsgEngine_FindNodeByProperty | ( | GWEN_MSGENGINE * | e, | |
const char * | t, | |||
const char * | pname, | |||
int | version, | |||
const char * | pvalue | |||
) |
Looks for a node of the given type. Example: If type is "GROUP" then the node will be searched in "<GROUPS>", and the tag name will be "<GROUPdef>".
Definition at line 919 of file msgengine.c.
References DBG_DEBUG, DBG_ERROR, DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEngine_GetMode(), GWEN_MsgEngine_GetProtocolVersion(), GWEN_XMLNode_GetChild(), GWEN_XMLNode_GetData(), GWEN_XMLNode_GetProperty(), GWEN_XMLNode_GetType(), GWEN_XMLNode_Next(), and GWEN_XMLNodeTypeTag.
Referenced by GWEN_MsgEngine__ListGroup(), GWEN_MsgEngine__ReadGroup(), GWEN_MsgEngine__ShowGroup(), GWEN_MsgEngine_FindGroupByProperty(), GWEN_MsgEngine_ListMessage(), GWEN_MsgEngine_ReadMessage(), and GWEN_MsgEngine_ShowMessage().
GWENHYWFAR_API GWEN_XMLNODE* GWEN_MsgEngine_FindNodeByPropertyStrictProto | ( | GWEN_MSGENGINE * | e, | |
const char * | t, | |||
const char * | pname, | |||
int | version, | |||
const char * | pvalue | |||
) |
Definition at line 1009 of file msgengine.c.
References DBG_DEBUG, DBG_ERROR, DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEngine_GetMode(), GWEN_MsgEngine_GetProtocolVersion(), GWEN_XMLNode_GetChild(), GWEN_XMLNode_GetData(), GWEN_XMLNode_GetProperty(), GWEN_XMLNode_GetType(), GWEN_XMLNode_Next(), and GWEN_XMLNodeTypeTag.
GWENHYWFAR_API void GWEN_MsgEngine_free | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 63 of file msgengine.c.
References GWEN_DB_Group_free(), GWEN_FREE_OBJECT, GWEN_INHERIT_FINI, GWEN_MsgEngine_TrustedData_free(), and GWEN_XMLNode_free().
GWENHYWFAR_API GWEN_MSGENGINE_BINTYPEREAD_PTR GWEN_MsgEngine_GetBinTypeReadFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 311 of file msgengine.c.
GWENHYWFAR_API GWEN_MSGENGINE_BINTYPEWRITE_PTR GWEN_MsgEngine_GetBinTypeWriteFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 328 of file msgengine.c.
GWENHYWFAR_API const char* GWEN_MsgEngine_GetCharsToEscape | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 122 of file msgengine.c.
GWENHYWFAR_API GWEN_XMLNODE* GWEN_MsgEngine_GetDefinitions | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 216 of file msgengine.c.
GWENHYWFAR_API const char* GWEN_MsgEngine_GetDelimiters | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 140 of file msgengine.c.
GWENHYWFAR_API char GWEN_MsgEngine_GetEscapeChar | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 107 of file msgengine.c.
GWENHYWFAR_API GWEN_MSGENGINE_GETGLOBALVALUES_PTR GWEN_MsgEngine_GetGetGlobalValuesFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 244 of file msgengine.c.
GWENHYWFAR_API void* GWEN_MsgEngine_GetInheritorData | ( | const GWEN_MSGENGINE * | e | ) |
Definition at line 363 of file msgengine.c.
GWENHYWFAR_API int GWEN_MsgEngine_GetIntValue | ( | GWEN_MSGENGINE * | e, | |
const char * | path, | |||
int | defValue | |||
) |
Definition at line 3447 of file msgengine.c.
References GWEN_DB_GetIntValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API const char* GWEN_MsgEngine_GetMode | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 163 of file msgengine.c.
References GWEN_DB_GetCharValue(), and GWEN_MsgEngine__GetGlobalValues().
Referenced by GWEN_MsgEngine__GetGroup(), GWEN_MsgEngine__WriteElement(), GWEN_MsgEngine_FindNodeByProperty(), and GWEN_MsgEngine_FindNodeByPropertyStrictProto().
GWENHYWFAR_API unsigned int GWEN_MsgEngine_GetProtocolVersion | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 191 of file msgengine.c.
References GWEN_DB_GetIntValue(), and GWEN_MsgEngine__GetGlobalValues().
Referenced by GWEN_MsgEngine__GetGroup(), GWEN_MsgEngine_FindNodeByProperty(), and GWEN_MsgEngine_FindNodeByPropertyStrictProto().
GWENHYWFAR_API GWEN_MSGENGINE_TYPECHECK_PTR GWEN_MsgEngine_GetTypeCheckFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 292 of file msgengine.c.
GWENHYWFAR_API GWEN_MSGENGINE_TYPEREAD_PTR GWEN_MsgEngine_GetTypeReadFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 260 of file msgengine.c.
GWENHYWFAR_API GWEN_MSGENGINE_TYPEWRITE_PTR GWEN_MsgEngine_GetTypeWriteFunction | ( | GWEN_MSGENGINE * | e | ) |
Definition at line 276 of file msgengine.c.
GWENHYWFAR_API const char* GWEN_MsgEngine_GetValue | ( | GWEN_MSGENGINE * | e, | |
const char * | path, | |||
const char * | defValue | |||
) |
Definition at line 3433 of file msgengine.c.
References GWEN_DB_GetCharValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API GWEN_XMLNODE* GWEN_MsgEngine_ListMessage | ( | GWEN_MSGENGINE * | e, | |
const char * | typ, | |||
const char * | msgName, | |||
int | msgVersion, | |||
uint32_t | flags | |||
) |
This function creates a full tree of all groups and elements used by the given message. The caller is responsible for freeing the data returned.
Definition at line 2730 of file msgengine.c.
References DBG_ERROR, DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEngine__ListGroup(), GWEN_MsgEngine_FindNodeByProperty(), GWEN_StringList_free(), GWEN_StringList_new(), GWEN_XMLNode_dup(), GWEN_XMLNode_free(), and GWEN_XMLNode_RemoveChildren().
GWENHYWFAR_API GWEN_MSGENGINE* GWEN_MsgEngine_new | ( | void | ) |
Definition at line 48 of file msgengine.c.
References GWEN_DB_Group_new(), GWEN_INHERIT_INIT, and GWEN_NEW_OBJECT.
GWENHYWFAR_API int GWEN_MsgEngine_ParseMessage | ( | GWEN_MSGENGINE * | e, | |
GWEN_XMLNODE * | group, | |||
GWEN_BUFFER * | msgbuf, | |||
GWEN_DB_NODE * | gr, | |||
uint32_t | flags | |||
) |
This function parses a single entity specified by a single XML node (which may of course consist of multiple XML nodes). This function makes no assumptions about the format of used variables whatsoever. All data parsed from the given message is stored within the given database.
Definition at line 3379 of file msgengine.c.
References DBG_INFO, GWEN_LOGDOMAIN, and GWEN_MsgEngine__ReadGroup().
Referenced by GWEN_MsgEngine_ReadMessage().
GWENHYWFAR_API int GWEN_MsgEngine_ReadMessage | ( | GWEN_MSGENGINE * | e, | |
const char * | gtype, | |||
GWEN_BUFFER * | mbuf, | |||
GWEN_DB_NODE * | gr, | |||
uint32_t | flags | |||
) |
This function reads all segments found within the given buffer. This is used to read a full message containing multiple segments. It assumes that each segment starts with a group with the id of "SegHead" which defines the variable "code" to determine each segment type. Please note that this function makes no further assumptions about the format of a segment, group or element of a message. This is totally based on the settings specified in the XML file. Unknown segments are simply skipped. For each segment found inside the message a group is created within the given database. The name of that group is derived from the property "id" within the XML description of each segment (or "code" if "id" does not exist). One special group is created below every segment group: "segment". This group contains some variables:
The data of every segment is simply added to the database, so there may be multiple groups with the same name if a given segment type occurs more often than once.
e | message engine | |
gtype | typename for segments (most callers use "SEG") | |
mbuf | GWEN_BUFFER containing the message. Parsing is started at the current position within the buffer, so please make sure that this pos is set to the beginning of the message before calling this function. | |
gr | database to store information parsed from the given message | |
flags | see GWEN_MSGENGINE_READ_FLAGS_TRUSTINFO and GWEN_MSGENGINE_READ_FLAGS_DEFAULT |
Definition at line 3531 of file msgengine.c.
References DBG_DEBUG, DBG_ERROR, DBG_INFO, DBG_NOTICE, GWEN_Buffer_GetBytesLeft(), GWEN_Buffer_GetPos(), GWEN_Buffer_GetStart(), GWEN_Buffer_GetUsedBytes(), GWEN_Buffer_SetPos(), GWEN_DB_Dump(), GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_GetCharValue(), GWEN_DB_GetGroup(), GWEN_DB_GetIntValue(), GWEN_DB_Group_free(), GWEN_DB_Group_new(), GWEN_DB_SetIntValue(), GWEN_LOGDOMAIN, GWEN_MsgEngine_AddTrustInfo(), GWEN_MsgEngine_FindGroupByProperty(), GWEN_MsgEngine_FindNodeByProperty(), GWEN_MsgEngine_ParseMessage(), GWEN_MSGENGINE_READ_FLAGS_TRUSTINFO, GWEN_MsgEngine_SkipSegment(), GWEN_MsgEngineTrustLevelHigh, GWEN_PATH_FLAGS_CREATE_GROUP, GWEN_Text_DumpString(), and GWEN_XMLNode_GetProperty().
GWENHYWFAR_API const char* GWEN_MsgEngine_SearchForProperty | ( | GWEN_XMLNODE * | node, | |
GWEN_XMLNODE * | refnode, | |||
const char * | name, | |||
int | topDown | |||
) |
Searches for a property in "node" and in "refnode" and all its parents. If topdown is 0 then the nearest value is used, otherwise the farest one is used.
Definition at line 1275 of file msgengine.c.
References DBG_DEBUG, GWEN_LOGDOMAIN, GWEN_XMLNode_GetParent(), and GWEN_XMLNode_GetProperty().
GWENHYWFAR_API void GWEN_MsgEngine_SetBinTypeReadFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_BINTYPEREAD_PTR | p | |||
) |
Definition at line 302 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetBinTypeWriteFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_BINTYPEWRITE_PTR | p | |||
) |
Definition at line 319 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetCharsToEscape | ( | GWEN_MSGENGINE * | e, | |
const char * | c | |||
) |
Definition at line 114 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetDefinitions | ( | GWEN_MSGENGINE * | e, | |
GWEN_XMLNODE * | n, | |||
int | take | |||
) |
e | message engine for which the definition is to be added | |
n | xml node to add | |
take | if !=0 then the message engine will take over ownership of the XML node. |
Definition at line 222 of file msgengine.c.
References GWEN_XMLNode_free().
GWENHYWFAR_API void GWEN_MsgEngine_SetDelimiters | ( | GWEN_MSGENGINE * | e, | |
const char * | s | |||
) |
Definition at line 129 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetEscapeChar | ( | GWEN_MSGENGINE * | e, | |
char | c | |||
) |
Definition at line 100 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetFreeDataFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_FREEDATA_PTR | p | |||
) |
Definition at line 354 of file msgengine.c.
References DBG_WARN, and GWEN_LOGDOMAIN.
GWENHYWFAR_API void GWEN_MsgEngine_SetGetCharValueFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_GETCHARVALUE_PTR | p | |||
) |
Definition at line 336 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetGetGlobalValuesFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_GETGLOBALVALUES_PTR | p | |||
) |
Definition at line 235 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetGetIntValueFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_GETINTVALUE_PTR | p | |||
) |
Definition at line 345 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetInheritorData | ( | GWEN_MSGENGINE * | e, | |
void * | d | |||
) |
Definition at line 370 of file msgengine.c.
References DBG_WARN, and GWEN_LOGDOMAIN.
GWENHYWFAR_API int GWEN_MsgEngine_SetIntValue | ( | GWEN_MSGENGINE * | e, | |
const char * | path, | |||
int | value | |||
) |
Definition at line 3417 of file msgengine.c.
References GWEN_DB_FLAGS_DEFAULT, GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_SetIntValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API void GWEN_MsgEngine_SetMode | ( | GWEN_MSGENGINE * | e, | |
const char * | mode | |||
) |
Definition at line 147 of file msgengine.c.
References GWEN_DB_DeleteVar(), GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_SetCharValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API void GWEN_MsgEngine_SetProtocolVersion | ( | GWEN_MSGENGINE * | e, | |
unsigned int | p | |||
) |
Definition at line 201 of file msgengine.c.
References GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_SetIntValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API void GWEN_MsgEngine_SetTypeCheckFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_TYPECHECK_PTR | p | |||
) |
Definition at line 283 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetTypeReadFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_TYPEREAD_PTR | p | |||
) |
Definition at line 251 of file msgengine.c.
GWENHYWFAR_API void GWEN_MsgEngine_SetTypeWriteFunction | ( | GWEN_MSGENGINE * | e, | |
GWEN_MSGENGINE_TYPEWRITE_PTR | p | |||
) |
Definition at line 267 of file msgengine.c.
GWENHYWFAR_API int GWEN_MsgEngine_SetValue | ( | GWEN_MSGENGINE * | e, | |
const char * | path, | |||
const char * | value | |||
) |
Set a global variable which will be used for "$"-Variables in description files.
Definition at line 3401 of file msgengine.c.
References GWEN_DB_FLAGS_DEFAULT, GWEN_DB_FLAGS_OVERWRITE_VARS, GWEN_DB_SetCharValue(), and GWEN_MsgEngine__GetGlobalValues().
GWENHYWFAR_API int GWEN_MsgEngine_ShowMessage | ( | GWEN_MSGENGINE * | e, | |
const char * | typ, | |||
const char * | msgName, | |||
int | msgVersion, | |||
uint32_t | flags | |||
) |
Deprecated, use GWEN_MsgEngine_ListMessage instead.
Definition at line 2418 of file msgengine.c.
References DBG_ERROR, DBG_INFO, GWEN_LOGDOMAIN, GWEN_MsgEngine__ShowGroup(), GWEN_MsgEngine_FindNodeByProperty(), GWEN_StringList_free(), and GWEN_StringList_new().
GWENHYWFAR_API int GWEN_MsgEngine_SkipSegment | ( | GWEN_MSGENGINE * | e, | |
GWEN_BUFFER * | msgbuf, | |||
unsigned char | escapeChar, | |||
unsigned char | delimiter | |||
) |
This function skips all bytes from the given buffer until the given delimiter is found or the buffer ends. It also takes care of escape characters (to not accidentally take an escaped delimiter for a real one) and is able to identify and correctly skip binary data. For the latter to work it takes into account that binary data is preceeded by a "@123@" sequence, where "123" is the length of the binary data. This sequence has been taken from the HBCI specs (German homebanking protocol) and has proven to be very effective ;-)
GWENHYWFAR_API GWEN_MSGENGINE_TRUSTEDDATA* GWEN_MsgEngine_TakeTrustInfo | ( | GWEN_MSGENGINE * | e | ) |
This function returns trust info gathered while parsing a message. The caller of this function takes over ownership of this list of data, so it is his responsibility to free it.
Definition at line 3906 of file msgengine.c.