loudmouth/lm-message.c
changeset 79 63971f168ce6
parent 57 6b168a8917f7
child 84 7ae7b690aa89
equal deleted inserted replaced
78:8506d9435c93 79:63971f168ce6
   200  * Return value: a newly created #LmMessage
   200  * Return value: a newly created #LmMessage
   201  **/
   201  **/
   202 LmMessage *
   202 LmMessage *
   203 lm_message_new (const gchar *to, LmMessageType type)
   203 lm_message_new (const gchar *to, LmMessageType type)
   204 {
   204 {
   205 	LmMessage *m = g_new0 (LmMessage, 1);
   205 	LmMessage *m;
   206 	
   206 	gchar     *id;
       
   207 
       
   208 	m       = g_new0 (LmMessage, 1);
   207 	m->priv = g_new0 (LmMessagePriv, 1);
   209 	m->priv = g_new0 (LmMessagePriv, 1);
   208 
   210 
   209 	PRIV(m)->ref_count = 1;
   211 	PRIV(m)->ref_count = 1;
   210 	PRIV(m)->type      = type;
   212 	PRIV(m)->type      = type;
   211 	PRIV(m)->sub_type  = message_sub_type_when_unset (type);
   213 	PRIV(m)->sub_type  = message_sub_type_when_unset (type);
   212 	
   214 	
   213 	m->node = _lm_message_node_new (_lm_message_type_to_string (type));
   215 	m->node = _lm_message_node_new (_lm_message_type_to_string (type));
   214 
   216 
   215 	lm_message_node_set_attribute (m->node, "id", _lm_utils_generate_id());
   217 	id = _lm_utils_generate_id ();
       
   218 	lm_message_node_set_attribute (m->node, "id", id);
       
   219 	g_free (id);
   216 	
   220 	
   217 	if (to) {
   221 	if (to) {
   218 		lm_message_node_set_attribute (m->node, "to", to);
   222 		lm_message_node_set_attribute (m->node, "to", to);
   219 	}
   223 	}
   220 
   224 
   239 LmMessage *
   243 LmMessage *
   240 lm_message_new_with_sub_type (const gchar      *to,
   244 lm_message_new_with_sub_type (const gchar      *to,
   241 			      LmMessageType     type, 
   245 			      LmMessageType     type, 
   242 			      LmMessageSubType  sub_type)
   246 			      LmMessageSubType  sub_type)
   243 {
   247 {
   244 	LmMessage   *m = lm_message_new (to, type);
   248 	LmMessage   *m;
   245 	const gchar *type_str;
   249 	const gchar *type_str;
       
   250 
       
   251 	m = lm_message_new (to, type);
   246 
   252 
   247 	type_str = _lm_message_sub_type_to_string (sub_type);
   253 	type_str = _lm_message_sub_type_to_string (sub_type);
   248 
   254 
   249 	if (type_str) {
   255 	if (type_str) {
   250 		lm_message_node_set_attributes (m->node,
   256 		lm_message_node_set_attributes (m->node,
   335 
   341 
   336 	PRIV(message)->ref_count--;
   342 	PRIV(message)->ref_count--;
   337 	
   343 	
   338 	if (PRIV(message)->ref_count == 0) {
   344 	if (PRIV(message)->ref_count == 0) {
   339 		lm_message_node_unref (message->node);
   345 		lm_message_node_unref (message->node);
       
   346 		g_free (message->priv);
   340 		g_free (message);
   347 		g_free (message);
   341 	}
   348 	}
   342 }
   349 }