6
* Purple is the legal property of its developers, whose names are too numerous
7
* to list here. Please refer to the COPYRIGHT file distributed with this
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
25
#ifndef PURPLE_JABBER_JINGLE_CONTENT_H
26
#define PURPLE_JABBER_JINGLE_CONTENT_H
32
#include "transport.h"
35
#include <glib-object.h>
39
#define JINGLE_TYPE_CONTENT (jingle_content_get_type())
40
#define JINGLE_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), JINGLE_TYPE_CONTENT, JingleContent))
41
#define JINGLE_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), JINGLE_TYPE_CONTENT, JingleContentClass))
42
#define JINGLE_IS_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), JINGLE_TYPE_CONTENT))
43
#define JINGLE_IS_CONTENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), JINGLE_TYPE_CONTENT))
44
#define JINGLE_CONTENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JINGLE_TYPE_CONTENT, JingleContentClass))
46
/** @copydoc _JingleContent */
47
typedef struct _JingleContent JingleContent;
48
/** @copydoc _JingleContentClass */
49
typedef struct _JingleContentClass JingleContentClass;
50
/** @copydoc _JingleContentPrivate */
51
typedef struct _JingleContentPrivate JingleContentPrivate;
53
/** The content class */
54
struct _JingleContentClass
56
GObjectClass parent_class; /**< The parent class. */
58
xmlnode *(*to_xml) (JingleContent *content, xmlnode *jingle, JingleActionType action);
59
JingleContent *(*parse) (xmlnode *content);
60
void (*handle_action) (JingleContent *content, xmlnode *xmlcontent, JingleActionType action);
61
const gchar *description_type;
64
/** The content class's private data */
67
GObject parent; /**< The parent of this object. */
68
JingleContentPrivate *priv; /**< The private data of this object. */
76
* Gets the content class's GType
78
* @return The content class's GType.
80
GType jingle_content_get_type(void);
82
JingleContent *jingle_content_create(const gchar *type, const gchar *creator,
83
const gchar *disposition, const gchar *name,
84
const gchar *senders, JingleTransport *transport);
86
JingleSession *jingle_content_get_session(JingleContent *content);
87
const gchar *jingle_content_get_description_type(JingleContent *content);
88
gchar *jingle_content_get_creator(JingleContent *content);
89
gchar *jingle_content_get_disposition(JingleContent *content);
90
gchar *jingle_content_get_name(JingleContent *content);
91
gchar *jingle_content_get_senders(JingleContent *content);
92
JingleTransport *jingle_content_get_transport(JingleContent *content);
93
JingleTransport *jingle_content_get_pending_transport(JingleContent *content);
95
void jingle_content_set_session(JingleContent *content, JingleSession *session);
96
void jingle_content_set_pending_transport(JingleContent *content, JingleTransport *transport);
97
void jingle_content_accept_transport(JingleContent *content);
98
void jingle_content_remove_pending_transport(JingleContent *content);
99
void jingle_content_modify(JingleContent *content, const gchar *senders);
101
#define jingle_content_create_content_accept(session) \
102
jingle_session_to_packet(session, JINGLE_CONTENT_ACCEPT)
103
#define jingle_content_create_content_add(session) \
104
jingle_session_to_packet(session, JINGLE_CONTENT_ADD)
105
#define jingle_content_create_content_modify(session) \
106
jingle_session_to_packet(session, JINGLE_CONTENT_MODIFY)
107
#define jingle_content_create_content_remove(session) \
108
jingle_session_to_packet(session, JINGLE_CONTENT_REMOVE)
110
JingleContent *jingle_content_parse(xmlnode *content);
111
xmlnode *jingle_content_to_xml(JingleContent *content, xmlnode *jingle, JingleActionType action);
112
void jingle_content_handle_action(JingleContent *content, xmlnode *xmlcontent, JingleActionType action);
120
#endif /* PURPLE_JABBER_JINGLE_CONTENT_H */