src/protocols/msn/msg.c

changeset 10345
7d7f8cfa2b4f
parent 10284
257978b5df5b
child 10481
a5d6b8e1717d
equal deleted inserted replaced
10344:09d0502090b3 10345:7d7f8cfa2b4f
30 MsnMessage *msg; 30 MsnMessage *msg;
31 31
32 msg = g_new0(MsnMessage, 1); 32 msg = g_new0(MsnMessage, 1);
33 msg->type = type; 33 msg->type = type;
34 34
35 #ifdef MSN_DEBUG_MSG
36 gaim_debug_info("msn", "message new (%p)(%d)\n", msg, type);
37 #endif
38
35 msg->attr_table = g_hash_table_new_full(g_str_hash, g_str_equal, 39 msg->attr_table = g_hash_table_new_full(g_str_hash, g_str_equal,
36 g_free, g_free); 40 g_free, g_free);
37 41
38 msn_message_ref(msg); 42 msn_message_ref(msg);
43
44 return msg;
45 }
46
47 void
48 msn_message_destroy(MsnMessage *msg)
49 {
50 g_return_if_fail(msg != NULL);
51
52 if (msg->ref_count > 0)
53 {
54 msn_message_unref(msg);
55
56 return;
57 }
58
59 #ifdef MSN_DEBUG_MSG
60 gaim_debug_info("msn", "message destroy (%p)\n", msg);
61 #endif
62
63 if (msg->remote_user != NULL)
64 g_free(msg->remote_user);
65
66 if (msg->body != NULL)
67 g_free(msg->body);
68
69 if (msg->content_type != NULL)
70 g_free(msg->content_type);
71
72 if (msg->charset != NULL)
73 g_free(msg->charset);
74
75 g_hash_table_destroy(msg->attr_table);
76 g_list_free(msg->attr_list);
77
78 g_free(msg);
79 }
80
81 MsnMessage *
82 msn_message_ref(MsnMessage *msg)
83 {
84 g_return_val_if_fail(msg != NULL, NULL);
85
86 msg->ref_count++;
87
88 #ifdef MSN_DEBUG_MSG
89 gaim_debug_info("msn", "message ref (%p)[%d]\n", msg, msg->ref_count);
90 #endif
91
92 return msg;
93 }
94
95 MsnMessage *
96 msn_message_unref(MsnMessage *msg)
97 {
98 g_return_val_if_fail(msg != NULL, NULL);
99
100 if (msg->ref_count <= 0)
101 return NULL;
102
103 msg->ref_count--;
104
105 #ifdef MSN_DEBUG_MSG
106 gaim_debug_info("msn", "message unref (%p)[%d]\n", msg, msg->ref_count);
107 #endif
108
109 if (msg->ref_count == 0)
110 {
111 msn_message_destroy(msg);
112
113 return NULL;
114 }
39 115
40 return msg; 116 return msg;
41 } 117 }
42 118
43 MsnMessage * 119 MsnMessage *
239 msg->cmd = cmd; 315 msg->cmd = cmd;
240 316
241 return msg; 317 return msg;
242 } 318 }
243 319
244 void
245 msn_message_destroy(MsnMessage *msg)
246 {
247 g_return_if_fail(msg != NULL);
248
249 if (msg->ref_count > 0)
250 {
251 msn_message_unref(msg);
252
253 return;
254 }
255
256 if (msg->remote_user != NULL)
257 g_free(msg->remote_user);
258
259 if (msg->body != NULL)
260 g_free(msg->body);
261
262 if (msg->content_type != NULL)
263 g_free(msg->content_type);
264
265 if (msg->charset != NULL)
266 g_free(msg->charset);
267
268 g_hash_table_destroy(msg->attr_table);
269 g_list_free(msg->attr_list);
270
271 g_free(msg);
272 }
273
274 MsnMessage *
275 msn_message_ref(MsnMessage *msg)
276 {
277 g_return_val_if_fail(msg != NULL, NULL);
278
279 msg->ref_count++;
280
281 return msg;
282 }
283
284 MsnMessage *
285 msn_message_unref(MsnMessage *msg)
286 {
287 g_return_val_if_fail(msg != NULL, NULL);
288
289 if (msg->ref_count <= 0)
290 return NULL;
291
292 msg->ref_count--;
293
294 if (msg->ref_count == 0)
295 {
296 msn_message_destroy(msg);
297
298 return NULL;
299 }
300
301 return msg;
302 }
303
304 char * 320 char *
305 msn_message_gen_slp_body(MsnMessage *msg, size_t *ret_size) 321 msn_message_gen_slp_body(MsnMessage *msg, size_t *ret_size)
306 { 322 {
307 MsnSlpHeader header; 323 MsnSlpHeader header;
308 324
689 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->msnslp_header.flags); 705 g_string_append_printf(str, "Flags: 0x%x\r\n", msg->msnslp_header.flags);
690 g_string_append_printf(str, "ACK ID: %u\r\n", msg->msnslp_header.ack_id); 706 g_string_append_printf(str, "ACK ID: %u\r\n", msg->msnslp_header.ack_id);
691 g_string_append_printf(str, "SUB ID: %u\r\n", msg->msnslp_header.ack_sub_id); 707 g_string_append_printf(str, "SUB ID: %u\r\n", msg->msnslp_header.ack_sub_id);
692 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.ack_size); 708 g_string_append_printf(str, "ACK Size: %" G_GUINT64_FORMAT "\r\n", msg->msnslp_header.ack_size);
693 709
694 #ifdef DEBUG_SLP_VERBOSE 710 #ifdef MSN_DEBUG_SLP_VERBOSE
695 if (body != NULL) 711 if (body != NULL)
696 { 712 {
697 if (text_body) 713 if (text_body)
698 { 714 {
699 g_string_append_len(str, body, body_len); 715 g_string_append_len(str, body, body_len);

mercurial