/usr/include/libpurple/mediamanager.h is in libpurple-dev 2.12.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | /**
* @file mediamanager.h Media Manager API
* @ingroup core
*/
/* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#ifndef _PURPLE_MEDIA_MANAGER_H_
#define _PURPLE_MEDIA_MANAGER_H_
#include <glib.h>
#include <glib-object.h>
/** An opaque structure representing a group of (usually all) media calls. */
typedef struct _PurpleMediaManager PurpleMediaManager;
/** The GObject class structure of the PurpleMediaManager object. */
typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass;
#include "account.h"
#include "media.h"
/**
* PurpleMediaAppDataCallbacks:
* @readable: Called when the stream has received data and is readable.
* @writable: Called when the stream has become writable or has stopped being
* writable.
*
* A set of callbacks that can be installed on an Application data session with
* purple_media_manager_set_application_data_callbacks()
*
* Once installed the @readable callback will get called as long as data is
* available to read, so the data must be read completely.
* The @writable callback will only be called when the writable state of the
* stream changes. The @writable argument defines whether the stream has
* become writable or stopped being writable.
*
*/
typedef struct {
void (*readable) (PurpleMediaManager *manager, PurpleMedia *media,
const gchar *session_id, const gchar *participant, gpointer user_data);
void (*writable) (PurpleMediaManager *manager, PurpleMedia *media,
const gchar *session_id, const gchar *participant, gboolean writable,
gpointer user_data);
} PurpleMediaAppDataCallbacks;
G_BEGIN_DECLS
#define PURPLE_TYPE_MEDIA_MANAGER (purple_media_manager_get_type())
#define PURPLE_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManager))
#define PURPLE_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))
#define PURPLE_IS_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_MANAGER))
#define PURPLE_IS_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_MANAGER))
#define PURPLE_MEDIA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))
#ifdef __cplusplus
extern "C" {
#endif
/**************************************************************************/
/** @name Media Manager API */
/**************************************************************************/
/*@{*/
/**
* Gets the media manager's GType.
*
* @return The media manager's GType.
*
* @since 2.6.0
*/
GType purple_media_manager_get_type(void);
/**
* Gets the "global" media manager object. It's created if it doesn't already exist.
*
* @return The "global" instance of the media manager object.
*
* @since 2.6.0
*/
PurpleMediaManager *purple_media_manager_get(void);
/**
* Creates a media session.
*
* @param manager The media manager to create the session under.
* @param account The account to create the session on.
* @param conference_type The conference type to feed into Farsight2.
* @param remote_user The remote user to initiate the session with.
* @param initiator TRUE if the local user is the initiator of this media call, FALSE otherwise.
*
* @return A newly created media session.
*
* @since 2.6.0
*/
PurpleMedia *purple_media_manager_create_media(PurpleMediaManager *manager,
PurpleAccount *account,
const char *conference_type,
const char *remote_user,
gboolean initiator);
/**
* Gets all of the media sessions.
*
* @param manager The media manager to get all of the sessions from.
*
* @return A list of all the media sessions.
*
* @since 2.6.0
*/
GList *purple_media_manager_get_media(PurpleMediaManager *manager);
/**
* Gets all of the media sessions for a given account.
*
* @param manager The media manager to get the sessions from.
* @param account The account the sessions are on.
*
* @return A list of the media sessions on the given account.
*
* @since 2.6.0
*/
GList *purple_media_manager_get_media_by_account(
PurpleMediaManager *manager, PurpleAccount *account);
/**
* Removes a media session from the media manager.
*
* @param manager The media manager to remove the media session from.
* @param media The media session to remove.
*
* @since 2.6.0
*/
void
purple_media_manager_remove_media(PurpleMediaManager *manager,
PurpleMedia *media);
/**
* Creates a private media session. A private media session is a
* media session which is private to the caller. It is meant to be
* used by plugins to create a media session that the front-end does
* not get notified about. It is useful especially for sessions with a
* type of PURPLE_MEDIA_APPLICATION which the front-end wouldn't know
* how to handle.
*
* @param manager The media manager to create the session under.
* @param account The account to create the session on.
* @param conference_type The conference type to feed into Farsight2.
* @param remote_user The remote user to initiate the session with.
* @param initiator TRUE if the local user is the initiator of this media
* call, FALSE otherwise.
*
* @return A newly created media session.
*
* @since 2.11.0
*/
PurpleMedia *purple_media_manager_create_private_media(
PurpleMediaManager *manager,
PurpleAccount *account,
const char *conference_type,
const char *remote_user,
gboolean initiator);
/**
* Gets all of the private media sessions.
*
* @param manager The media manager to get all of the sessions from.
*
* @return A list of all the private media sessions.
*
* @since 2.11.0
*/
GList *purple_media_manager_get_private_media(PurpleMediaManager *manager);
/**
* Gets all of the private media sessions for a given account.
*
* @param manager The media manager to get the sessions from.
* @param account The account the sessions are on.
*
* @return A list of the private media sessions on the given account.
*
* @since 2.11.0
*/
GList *purple_media_manager_get_private_media_by_account(
PurpleMediaManager *manager, PurpleAccount *account);
/**
* Signals that output windows should be created for the chosen stream.
*
* This shouldn't be called outside of mediamanager.c and media.c
*
* @param manager Manager the output windows are registered with.
* @param media Media session the output windows are registered for.
* @param session_id The session the output windows are registered with.
* @param participant The participant the output windows are registered with.
*
* @return TRUE if it succeeded, FALSE if it failed.
*
* @since 2.6.0
*/
gboolean purple_media_manager_create_output_window(
PurpleMediaManager *manager, PurpleMedia *media,
const gchar *session_id, const gchar *participant);
/**
* Registers a video output window to be created for a given stream.
*
* @param manager The manager to register the output window with.
* @param media The media instance to find the stream in.
* @param session_id The session the stream is associated with.
* @param participant The participant the stream is associated with.
* @param window_id The window ID to embed the video in.
*
* @return A unique ID to the registered output window, 0 if it failed.
*
* @since 2.6.0
*/
gulong purple_media_manager_set_output_window(PurpleMediaManager *manager,
PurpleMedia *media, const gchar *session_id,
const gchar *participant, gulong window_id);
/**
* Remove a previously registerd output window.
*
* @param manager The manager the output window was registered with.
* @param output_window_id The ID of the output window.
*
* @return TRUE if it found the output window and was successful, else FALSE.
*
* @since 2.6.0
*/
gboolean purple_media_manager_remove_output_window(
PurpleMediaManager *manager, gulong output_window_id);
/**
* Remove all output windows for a given conference/session/participant/stream.
*
* @param manager The manager the output windows were registered with.
* @param media The media instance the output windows were registered for.
* @param session_id The session the output windows were registered for.
* @param participant The participant the output windows were registered for.
*
* @since 2.6.0
*/
void purple_media_manager_remove_output_windows(
PurpleMediaManager *manager, PurpleMedia *media,
const gchar *session_id, const gchar *participant);
/**
* Sets which media caps the UI supports.
*
* @param manager The manager to set the caps on.
* @param caps The caps to set.
*
* @since 2.6.0
*/
void purple_media_manager_set_ui_caps(PurpleMediaManager *manager,
PurpleMediaCaps caps);
/**
* Gets which media caps the UI supports.
*
* @param manager The manager to get caps from.
*
* @return caps The caps retrieved.
*
* @since 2.6.0
*/
PurpleMediaCaps purple_media_manager_get_ui_caps(PurpleMediaManager *manager);
/**
* Sets which media backend type media objects will use.
*
* @param manager The manager to set the caps on.
* @param backend_type The media backend type to use.
*
* @since 2.7.0
*/
void purple_media_manager_set_backend_type(PurpleMediaManager *manager,
GType backend_type);
/**
* Gets which media backend type media objects will use.
*
* @param manager The manager to get the media backend type from.
*
* @return The type of media backend type media objects will use.
*
* @since 2.7.0
*/
GType purple_media_manager_get_backend_type(PurpleMediaManager *manager);
/**
* purple_media_manager_set_application_data_callbacks:
* @manager: The manager to register the callbacks with.
* @media: The media instance to register the callbacks with.
* @session_id: The session to register the callbacks with.
* @participant: The participant to register the callbacks with.
* @callbacks: The callbacks to be set on the session.
* @user_data: a user_data argument for the callbacks.
* @notify: a destroy notify function.
*
* Set callbacks on a session to be called when the stream becomes writable
* or readable for media sessions of type #PURPLE_MEDIA_APPLICATION
*/
void purple_media_manager_set_application_data_callbacks(
PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
const gchar *participant, PurpleMediaAppDataCallbacks *callbacks,
gpointer user_data, GDestroyNotify notify);
/**
* purple_media_manager_send_application_data:
* @manager: The manager to send data with.
* @media: The media instance to which the session belongs.
* @session_id: The session to send data to.
* @participant: The participant to send data to.
* @buffer: The buffer of data to send.
* @size: The size of @buffer
* @blocking: Whether to block until the data was send or not.
*
* Sends a buffer of data to a #PURPLE_MEDIA_APPLICATION session.
* If @blocking is set, unless an error occured, the function will not return
* until the data has been flushed into the network.
* If the stream is not writable, the data will be queued. It is the
* responsability of the user to stop sending data when the stream isn't
* writable anymore. It is also the responsability of the user to only start
* sending data after the stream has been configured correctly (encryption
* parameters for example).
*
* Returns: Number of bytes sent or -1 in case of error.
*/
gint purple_media_manager_send_application_data (
PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
const gchar *participant, gpointer buffer, guint size, gboolean blocking);
/**
* purple_media_manager_receive_application_data:
* @manager: The manager to receive data with.
* @media: The media instance to which the session belongs.
* @session_id: The session to receive data from.
* @participant: The participant to receive data from.
* @buffer: The buffer to receive data into.
* @max_size: The max_size of @buffer
* @blocking: Whether to block until the buffer is entirely filled or return
* with currently available data.
*
* Receive a buffer of data from a #PURPLE_MEDIA_APPLICATION session.
* If @blocking is set, unless an error occured, the function will not return
* until @max_size bytes are read.
*
* Returns: Number of bytes received or -1 in case of error.
*/
gint purple_media_manager_receive_application_data (
PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
const gchar *participant, gpointer buffer, guint max_size,
gboolean blocking);
/*}@*/
#ifdef __cplusplus
}
#endif
G_END_DECLS
#endif /* _PURPLE_MEDIA_MANAGER_H_ */
|