* Purple is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * 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; either version 2 of the License, or * (at your option) any later version. * 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 * An opaque structure representing a network candidate (IP Address and port struct _PurpleMediaCandidate PurpleMediaNetworkProtocol proto; PurpleMediaCandidateType type; } PurpleMediaCandidatePrivate; G_DEFINE_TYPE_WITH_PRIVATE(PurpleMediaCandidate, purple_media_candidate, purple_media_candidate_init(PurpleMediaCandidate *info) PurpleMediaCandidatePrivate *priv = purple_media_candidate_get_instance_private(info); priv->proto = PURPLE_MEDIA_NETWORK_PROTOCOL_UDP; priv->type = PURPLE_MEDIA_CANDIDATE_TYPE_HOST; purple_media_candidate_finalize(GObject *info) PurpleMediaCandidatePrivate *priv = purple_media_candidate_get_instance_private( PURPLE_MEDIA_CANDIDATE(info)); g_free(priv->foundation); G_OBJECT_CLASS(purple_media_candidate_parent_class)->finalize(info); purple_media_candidate_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) PurpleMediaCandidatePrivate *priv; g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object)); priv = purple_media_candidate_get_instance_private( PURPLE_MEDIA_CANDIDATE(object)); g_free(priv->foundation); priv->foundation = g_value_dup_string(value); priv->component_id = g_value_get_uint(value); priv->ip = g_value_dup_string(value); priv->port = g_value_get_uint(value); priv->base_ip = g_value_dup_string(value); priv->base_port = g_value_get_uint(value); priv->proto = g_value_get_enum(value); priv->priority = g_value_get_uint(value); priv->type = g_value_get_enum(value); priv->username = g_value_dup_string(value); priv->password = g_value_dup_string(value); priv->ttl = g_value_get_uint(value); G_OBJECT_WARN_INVALID_PROPERTY_ID( purple_media_candidate_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) PurpleMediaCandidatePrivate *priv; g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object)); priv = purple_media_candidate_get_instance_private( PURPLE_MEDIA_CANDIDATE(object)); g_value_set_string(value, priv->foundation); g_value_set_uint(value, priv->component_id); g_value_set_string(value, priv->ip); g_value_set_uint(value, priv->port); g_value_set_string(value, priv->base_ip); g_value_set_uint(value, priv->base_port); g_value_set_enum(value, priv->proto); g_value_set_uint(value, priv->priority); g_value_set_enum(value, priv->type); g_value_set_string(value, priv->username); g_value_set_string(value, priv->password); g_value_set_uint(value, priv->ttl); G_OBJECT_WARN_INVALID_PROPERTY_ID( purple_media_candidate_class_init(PurpleMediaCandidateClass *klass) GObjectClass *gobject_class = (GObjectClass*)klass; gobject_class->finalize = purple_media_candidate_finalize; gobject_class->set_property = purple_media_candidate_set_property; gobject_class->get_property = purple_media_candidate_get_property; g_object_class_install_property(gobject_class, PROP_FOUNDATION, g_param_spec_string("foundation", "The foundation of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_COMPONENT_ID, g_param_spec_uint("component-id", "The component id of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_IP, g_param_spec_string("ip", "The IP address of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_PORT, g_param_spec_uint("port", "The port of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_BASE_IP, g_param_spec_string("base-ip", "The internal IP address of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_BASE_PORT, g_param_spec_uint("base-port", "The internal port of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_PROTOCOL, g_param_spec_enum("protocol", "The protocol of the candidate.", PURPLE_TYPE_MEDIA_NETWORK_PROTOCOL, PURPLE_MEDIA_NETWORK_PROTOCOL_UDP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_PRIORITY, g_param_spec_uint("priority", "The priority of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_TYPE, g_param_spec_enum("type", "The type of the candidate.", PURPLE_TYPE_MEDIA_CANDIDATE_TYPE, PURPLE_MEDIA_CANDIDATE_TYPE_HOST, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_USERNAME, g_param_spec_string("username", "The username used to connect to the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_PASSWORD, g_param_spec_string("password", "The password use to connect to the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property(gobject_class, PROP_TTL, "The TTL of the candidate.", G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); purple_media_candidate_new(const gchar *foundation, guint component_id, PurpleMediaCandidateType type, PurpleMediaNetworkProtocol proto, const gchar *ip, guint port) return g_object_new(PURPLE_TYPE_MEDIA_CANDIDATE, "foundation", foundation, "component-id", component_id, purple_media_candidate_copy(PurpleMediaCandidate *candidate) PurpleMediaCandidatePrivate *priv; PurpleMediaCandidate *new_candidate; priv = purple_media_candidate_get_instance_private(candidate); new_candidate = purple_media_candidate_new(priv->foundation, priv->component_id, priv->type, priv->proto, g_object_set(new_candidate, "base-ip", priv->base_ip, "base-port", priv->base_port, "priority", priv->priority, "username", priv->username, "password", priv->password, purple_media_candidate_list_copy(GList *candidates) for (; candidates; candidates = g_list_next(candidates)) { new_list = g_list_prepend(new_list, purple_media_candidate_copy(candidates->data)); new_list = g_list_reverse(new_list); purple_media_candidate_list_free(GList *candidates) g_list_free_full(candidates, g_object_unref); purple_media_candidate_get_foundation(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); g_object_get(candidate, "foundation", &foundation, NULL); purple_media_candidate_get_component_id(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); g_object_get(candidate, "component-id", &component_id, NULL); purple_media_candidate_get_ip(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); g_object_get(candidate, "ip", &ip, NULL); purple_media_candidate_get_port(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); g_object_get(candidate, "port", &port, NULL); purple_media_candidate_get_base_ip(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); g_object_get(candidate, "base-ip", &base_ip, NULL); purple_media_candidate_get_base_port(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); g_object_get(candidate, "base_port", &base_port, NULL); PurpleMediaNetworkProtocol purple_media_candidate_get_protocol(PurpleMediaCandidate *candidate) PurpleMediaNetworkProtocol protocol; g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), PURPLE_MEDIA_NETWORK_PROTOCOL_UDP); g_object_get(candidate, "protocol", &protocol, NULL); purple_media_candidate_get_priority(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); g_object_get(candidate, "priority", &priority, NULL); purple_media_candidate_get_candidate_type(PurpleMediaCandidate *candidate) PurpleMediaCandidateType type; g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), PURPLE_MEDIA_CANDIDATE_TYPE_HOST); g_object_get(candidate, "type", &type, NULL); purple_media_candidate_get_username(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); g_object_get(candidate, "username", &username, NULL); purple_media_candidate_get_password(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); g_object_get(candidate, "password", &password, NULL); purple_media_candidate_get_ttl(PurpleMediaCandidate *candidate) g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); g_object_get(candidate, "ttl", &ttl, NULL);