Mercurial > pidgin
comparison src/protocols/msn/msg.c @ 5506:4f72b611f0ee
[gaim-migrate @ 5905]
A few changes here.
- Messages now have reference counting.
- There's a message queue API in servconn. This was needed for times when
we have a message but need further information from a command before
processing it, like initial e-mail notifications.
- As a result of the two above, we now have initial e-mail notifications
again!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 25 May 2003 09:04:32 +0000 |
parents | bae3c48b9b4c |
children | b8abf266dd3b |
comparison
equal
deleted
inserted
replaced
5505:870207a49f2f | 5506:4f72b611f0ee |
---|---|
61 msn_message_set_attr(msg, "User-Agent", "Gaim/" VERSION); | 61 msn_message_set_attr(msg, "User-Agent", "Gaim/" VERSION); |
62 msn_message_set_content_type(msg, "text/plain"); | 62 msn_message_set_content_type(msg, "text/plain"); |
63 msn_message_set_charset(msg, "UTF-8"); | 63 msn_message_set_charset(msg, "UTF-8"); |
64 msn_message_set_flag(msg, 'N'); | 64 msn_message_set_flag(msg, 'N'); |
65 | 65 |
66 msn_message_ref(msg); | |
67 | |
66 return msg; | 68 return msg; |
67 } | 69 } |
68 | 70 |
69 MsnMessage * | 71 MsnMessage * |
70 msn_message_new_from_str(MsnSession *session, const char *str) | 72 msn_message_new_from_str(MsnSession *session, const char *str) |
172 void | 174 void |
173 msn_message_destroy(MsnMessage *msg) | 175 msn_message_destroy(MsnMessage *msg) |
174 { | 176 { |
175 g_return_if_fail(msg != NULL); | 177 g_return_if_fail(msg != NULL); |
176 | 178 |
179 if (msg->ref_count > 0) { | |
180 msn_message_unref(msg); | |
181 | |
182 return; | |
183 } | |
184 | |
177 if (msg->sender != NULL) | 185 if (msg->sender != NULL) |
178 msn_user_unref(msg->sender); | 186 msn_user_unref(msg->sender); |
179 | 187 |
180 if (msg->receiver != NULL) | 188 if (msg->receiver != NULL) |
181 msn_user_unref(msg->receiver); | 189 msn_user_unref(msg->receiver); |
190 g_free(msg->charset); | 198 g_free(msg->charset); |
191 | 199 |
192 g_hash_table_destroy(msg->attr_table); | 200 g_hash_table_destroy(msg->attr_table); |
193 g_list_free(msg->attr_list); | 201 g_list_free(msg->attr_list); |
194 | 202 |
203 gaim_debug(GAIM_DEBUG_INFO, "msn", "Destroying message\n"); | |
195 g_free(msg); | 204 g_free(msg); |
205 } | |
206 | |
207 MsnMessage * | |
208 msn_message_ref(MsnMessage *msg) | |
209 { | |
210 g_return_val_if_fail(msg != NULL, NULL); | |
211 | |
212 msg->ref_count++; | |
213 | |
214 return msg; | |
215 } | |
216 | |
217 MsnMessage * | |
218 msn_message_unref(MsnMessage *msg) | |
219 { | |
220 g_return_val_if_fail(msg != NULL, NULL); | |
221 | |
222 if (msg->ref_count <= 0) | |
223 return NULL; | |
224 | |
225 msg->ref_count--; | |
226 | |
227 if (msg->ref_count == 0) { | |
228 msn_message_destroy(msg); | |
229 | |
230 return NULL; | |
231 } | |
232 | |
233 return msg; | |
196 } | 234 } |
197 | 235 |
198 char * | 236 char * |
199 msn_message_build_string(const MsnMessage *msg) | 237 msn_message_build_string(const MsnMessage *msg) |
200 { | 238 { |