diff options
author | Gary Kramlich <grim@reaperworld.com> | 2020-08-27 03:29:49 -0500 |
---|---|---|
committer | Gary Kramlich <grim@reaperworld.com> | 2020-08-27 03:29:49 -0500 |
commit | 1d43e61e7c873eedf49481319e174364e26b2149 (patch) | |
tree | 002ac23ce792c5a4f015692b340ea0632d070b2f /libpurple/purpleprotocolmedia.h | |
parent | bf285dddb150ca913393cc0ae28661c6ee77881c (diff) | |
download | pidgin-1d43e61e7c873eedf49481319e174364e26b2149.tar.gz |
Move PurpleProtocolMediaInterface to its own file.
Also cleaned up a few minor things along the way.
Testing Done:
Compile, docs, didn't update the pot file, but did a voice call between pidgin2 and pidgin3.
Reviewed at https://reviews.imfreedom.org/r/90/
Diffstat (limited to 'libpurple/purpleprotocolmedia.h')
-rw-r--r-- | libpurple/purpleprotocolmedia.h | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/libpurple/purpleprotocolmedia.h b/libpurple/purpleprotocolmedia.h new file mode 100644 index 0000000000..bf2b293edb --- /dev/null +++ b/libpurple/purpleprotocolmedia.h @@ -0,0 +1,145 @@ +/* + * purple + * + * 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 + * source distribution. + * + * 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, see <http://www.gnu.org/licenses/>. + */ + +#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION) +# error "only <purple.h> may be included directly" +#endif + +#ifndef PURPLE_PROTOCOL_MEDIA_H +#define PURPLE_PROTOCOL_MEDIA_H + +/** + * SECTION:purpleprotocolmedia + * @section_id: libpurple-purpleprotocolmedia + * @short_description: Protocol Media Interface + * @title: ProtocolMedia Interface + */ + +#include <glib.h> +#include <glib-object.h> + +#include <libpurple/account.h> +#include <libpurple/media.h> + +#define PURPLE_TYPE_PROTOCOL_MEDIA (purple_protocol_media_get_type()) +G_DECLARE_INTERFACE(PurpleProtocolMedia, purple_protocol_media, PURPLE, + PROTOCOL_MEDIA, GObject) + +G_BEGIN_DECLS + +/** + * PURPLE_TYPE_PROTOCOL_MEDIA: + * + * The standard _get_type method for #PurpleProtocolMedia. + * + * Since: 3.0.0 + */ + +/** + * PurpleProtocolMediaInterface: + * @initiate_session: Initiate a media session with the given contact. + * <sbr/>@account: The account to initiate the media session + * on. + * <sbr/>@who: The remote user to initiate the session with. + * <sbr/>@type: The type of media session to initiate. + * <sbr/>Returns: %TRUE if the call succeeded else %FALSE. + * (Doesn't imply the media session or stream + * will be successfully created) + * @get_caps: Checks to see if the given contact supports the given type of + * media session. + * <sbr/>@account: The account the contact is on. + * <sbr/>@who: The remote user to check for media capability with. + * <sbr/>Returns: The media caps the contact supports. + * @send_dtmf: Sends DTMF codes out-of-band in a protocol-specific way if the + * protocol supports it, or failing that in-band if the media backend + * can do so. See purple_media_send_dtmf(). + * + * The protocol media interface. + * + * This interface provides callbacks for media sessions on the protocol. + */ +struct _PurpleProtocolMediaInterface { + /*< private >*/ + GTypeInterface parent; + + /*< public >*/ + gboolean (*initiate_session)(PurpleProtocolMedia *media, PurpleAccount *account, const gchar *who, PurpleMediaSessionType type); + + PurpleMediaCaps (*get_caps)(PurpleProtocolMedia *media, PurpleAccount *account, const gchar *who); + + gboolean (*send_dtmf)(PurpleProtocolMedia *protocol_media, PurpleMedia *media, gchar dtmf, guint8 volume, guint8 duration); + + /*< private >*/ + gpointer reserved[4]; +}; + +/** + * purple_protocol_media_initiate_session: + * @media: The #PurpleProtocolMedia instance. + * @account: The #PurpleAccount instance. + * @who: The user to initiate a media session with. + * @type: The type of media session to create. + * + * Initiates a media connection of @type to @who. + * + * Returns: %TRUE if successful, %FALSE otherwise. + * + * Since: 3.0.0 + */ +gboolean purple_protocol_media_initiate_session(PurpleProtocolMedia *media, PurpleAccount *account, const gchar *who, PurpleMediaSessionType type); + +/** + * purple_protocol_media_get_caps: + * @media: The #PurpleProtocolMedia instance. + * @account: The #PurpleAccount instance. + * @who: The user to get the media capabilites for. + * + * Gets the #PurpleMediaCaps for @who which determine what types of media are + * available. + * + * Returns: the media capabilities of @who. + * + * Since: 3.0.0 + */ +PurpleMediaCaps purple_protocol_media_get_caps(PurpleProtocolMedia *media, PurpleAccount *account, const gchar *who); + +/** + * purple_protocol_media_send_dtmf: + * @protocol_media: The #PurpleProtocolMedia instance. + * @media: The #PurpleMedia instance. + * @dtmf: A DTMF to send. + * @volume: The volume to send @dtmf at. + * @duration: The duration to send @dtmf (in ms?) + * + * Sends a DTMF (dual-tone multi-frequency) signal via the established @media + * for the given @duration at the given @volume. + * + * It is up to the specific implementation if DTMF is send in or out of band. + * + * Returns: %TRUE if successful, %FALSE otherwise. + * + * Since: 3.0.0 + */ +gboolean purple_protocol_media_send_dtmf(PurpleProtocolMedia *protocol_media, PurpleMedia *media, gchar dtmf, guint8 volume, guint8 duration); + +G_END_DECLS + +#endif /* PURPLE_PROTOCOL_MEDIA_H */ |