* Copyright (c) 2004 Novell, Inc. All Rights Reserved. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA #include "nmconference.h" static int conf_count = 0; /* The conference identifier */ /* The list of participants for the conference */ /* Flags for the conference */ /* Reference count for this object */ /******************************************************************************* * Conference API -- see header file for comments ******************************************************************************/ nm_create_conference(const char *guid) NMConference *conf = g_new0(NMConference, 1); conf->guid = g_strdup(guid); conf->guid = g_strdup(BLANK_GUID); purple_debug(PURPLE_DEBUG_INFO, "novell", "Creating a conference %p, total=%d\n", nm_release_conference(NMConference * conference) g_return_if_fail(conference != NULL); purple_debug(PURPLE_DEBUG_INFO, "novell", "In release conference %p, refs=%d\n", conference, conference->ref_count); if (--conference->ref_count == 0) { purple_debug(PURPLE_DEBUG_INFO, "novell", "Releasing conference %p, total=%d\n", conference, --conf_count); g_free(conference->guid); if (conference->participants) { for (node = conference->participants; node; node = node->next) { NMUserRecord *user_record = node->data; nm_release_user_record(user_record); g_slist_free(conference->participants); nm_conference_is_instantiated(NMConference * conference) return (strncmp(conference->guid, BLANK_GUID, CONF_GUID_END) != 0); nm_conference_get_participant_count(NMConference * conference) return g_slist_length(conference->participants); nm_conference_get_participant(NMConference * conference, int index) return (NMUserRecord *) g_slist_nth_data(conference->participants, index); nm_conference_add_participant(NMConference * conference, NMUserRecord * user_record) if (conference == NULL || user_record == NULL) { nm_user_record_add_ref(user_record); conference->participants = g_slist_append(conference->participants, user_record); nm_conference_remove_participant(NMConference * conference, const char *dn) GSList *node, *element = NULL; if (conference == NULL || dn == NULL) { for (node = conference->participants; node; node = node->next) { NMUserRecord *user_record = node->data; if (nm_utf8_str_equal(dn, nm_user_record_get_dn(user_record))) { nm_release_user_record((NMUserRecord *) element->data); conference->participants = g_slist_remove_link(conference->participants, element); nm_conference_add_ref(NMConference * conference) nm_conference_set_flags(NMConference * conference, guint32 flags) conference->flags = flags; nm_conference_set_guid(NMConference * conference, const char *guid) /* Release memory for old guid */ g_free(conference->guid); conference->guid = g_strdup(guid); conference->guid = g_strdup(BLANK_GUID); nm_conference_set_data(NMConference * conference, gpointer data) nm_conference_get_data(NMConference * conference) nm_conference_get_guid(NMConference * conference)