LmMessageNode

LmMessageNode — A node in the message tree

Synopsis

                    LmMessageNode;
const gchar*        lm_message_node_get_value           (LmMessageNode *node);
void                lm_message_node_set_value           (LmMessageNode *node,
                                                         const gchar *value);
LmMessageNode*      lm_message_node_add_child           (LmMessageNode *node,
                                                         const gchar *name,
                                                         const gchar *value);
void                lm_message_node_set_attributes      (LmMessageNode *node,
                                                         const gchar *name,
                                                         ...);
const gchar*        lm_message_node_get_attribute       (LmMessageNode *node,
                                                         const gchar *name);
void                lm_message_node_set_attribute       (LmMessageNode *node,
                                                         const gchar *name,
                                                         const gchar *value);
LmMessageNode*      lm_message_node_get_child           (LmMessageNode *node,
                                                         const gchar *child_name);
LmMessageNode*      lm_message_node_find_child          (LmMessageNode *node,
                                                         const gchar *child_name);
gboolean            lm_message_node_get_raw_mode        (LmMessageNode *node);
void                lm_message_node_set_raw_mode        (LmMessageNode *node,
                                                         gboolean raw_mode);
LmMessageNode*      lm_message_node_ref                 (LmMessageNode *node);
void                lm_message_node_unref               (LmMessageNode *node);
gchar*              lm_message_node_to_string           (LmMessageNode *node);

Description

Details

LmMessageNode

typedef struct {
	gchar      *name;
	gchar      *value;
	gboolean    raw_mode;

        LmMessageNode     *next;
        LmMessageNode     *prev;
	LmMessageNode     *parent;
        LmMessageNode     *children;
} LmMessageNode;

A struct representing a node in a message.

gchar *name;

the name of the node

gchar *value;

value of the node, can be NULL

gboolean raw_mode;

if true, don't escape the content of the message. The content must be valid XML.

LmMessageNode *next;

next sibling

LmMessageNode *prev;

previous sibling

LmMessageNode *parent;

node parent

LmMessageNode *children;

pointing to first child

lm_message_node_get_value ()

const gchar*        lm_message_node_get_value           (LmMessageNode *node);

Retrieves the value of node.

node :

an LmMessageNode

Returns :


lm_message_node_set_value ()

void                lm_message_node_set_value           (LmMessageNode *node,
                                                         const gchar *value);

Sets the value of node. If a previous value is set it will be freed.

node :

an LmMessageNode

value :

the new value.

lm_message_node_add_child ()

LmMessageNode*      lm_message_node_add_child           (LmMessageNode *node,
                                                         const gchar *name,
                                                         const gchar *value);

Add a child node with name and value set to value.

node :

an LmMessageNode

name :

the name of the new child

value :

value of the new child

Returns :

the newly created child

lm_message_node_set_attributes ()

void                lm_message_node_set_attributes      (LmMessageNode *node,
                                                         const gchar *name,
                                                         ...);

Sets a list of attributes. The arguments should be names and corresponding value and needs to be ended with NULL.

node :

an LmMessageNode

name :

the first attribute, should be followed by a string with the value

... :

The rest of the name/value pairs

lm_message_node_get_attribute ()

const gchar*        lm_message_node_get_attribute       (LmMessageNode *node,
                                                         const gchar *name);

Fetches the attribute name from node.

node :

an LmMessageNode

name :

the attribute name

Returns :

the attribute value or NULL if not set

lm_message_node_set_attribute ()

void                lm_message_node_set_attribute       (LmMessageNode *node,
                                                         const gchar *name,
                                                         const gchar *value);

Sets the attribute name to value.

node :

an LmMessageNode

name :

name of attribute

value :

value of attribute.

lm_message_node_get_child ()

LmMessageNode*      lm_message_node_get_child           (LmMessageNode *node,
                                                         const gchar *child_name);

Fetches the child child_name from node. If child is not found as an immediate child of node NULL is returned.

node :

an LmMessageNode

child_name :

the childs name

Returns :

the child node or NULL if not found

lm_message_node_find_child ()

LmMessageNode*      lm_message_node_find_child          (LmMessageNode *node,
                                                         const gchar *child_name);

Locates a child among all children of node. The entire tree will be search until a child with name child_name is located.

node :

A LmMessageNode

child_name :

The name of the child to find

Returns :

the located child or NULL if not found

lm_message_node_get_raw_mode ()

gboolean            lm_message_node_get_raw_mode        (LmMessageNode *node);

Checks if the nodes value should be sent as raw mode.

node :

an LmMessageNode

Returns :

TRUE if nodes value should be sent as is and FALSE if the value will be escaped before sending.

lm_message_node_set_raw_mode ()

void                lm_message_node_set_raw_mode        (LmMessageNode *node,
                                                         gboolean raw_mode);

Set raw_mode to TRUE if you don't want to escape the value. You need to make sure the value is valid XML yourself.

node :

an LmMessageNode

raw_mode :

boolean specifying if node value should be escaped or not.

lm_message_node_ref ()

LmMessageNode*      lm_message_node_ref                 (LmMessageNode *node);

Adds a reference to node.

node :

an LmMessageNode

Returns :

the node

lm_message_node_unref ()

void                lm_message_node_unref               (LmMessageNode *node);

Removes a reference from node. When no more references are present the node is freed. When freed lm_message_node_unref() will be called on all children. If caller needs to keep references to the children a call to lm_message_node_ref() needs to be done before the call to lm_message_unref().

node :

an LmMessageNode

lm_message_node_to_string ()

gchar*              lm_message_node_to_string           (LmMessageNode *node);

Returns an XML string representing the node. This is what is sent over the wire. This is used internally Loudmouth and is external for debugging purposes.

node :

an LmMessageNode

Returns :

an XML string representation of node