1 /*
2  * wocky-jingle-types.h - Header for Jingle-related enums and typedefs
3  * Copyright © 2008–2012 Collabora Ltd.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18  */
19 #if !defined (WOCKY_H_INSIDE) && !defined (WOCKY_COMPILATION)
20 # error "Only <wocky/wocky.h> can be included directly."
21 #endif
22 
23 #ifndef __WOCKY_JINGLE_TYPES_H__
24 #define __WOCKY_JINGLE_TYPES_H__
25 
26 typedef struct _WockyJingleFactory WockyJingleFactory;
27 typedef struct _WockyJingleSession WockyJingleSession;
28 typedef struct _WockyJingleContent WockyJingleContent;
29 typedef struct _WockyJingleTransportGoogle WockyJingleTransportGoogle;
30 typedef struct _WockyJingleTransportRawUdp WockyJingleTransportRawUdp;
31 typedef struct _WockyJingleTransportIceUdp WockyJingleTransportIceUdp;
32 typedef struct _WockyJingleMediaRtp WockyJingleMediaRtp;
33 typedef struct _WockyJingleCandidate WockyJingleCandidate;
34 
35 typedef enum { /*< skip >*/
36   /* not a jingle message */
37   WOCKY_JINGLE_DIALECT_ERROR,
38   /* old libjingle3 gtalk variant */
39   WOCKY_JINGLE_DIALECT_GTALK3,
40   /* new gtalk variant */
41   WOCKY_JINGLE_DIALECT_GTALK4,
42   /* jingle in the old 0.15 version days */
43   WOCKY_JINGLE_DIALECT_V015,
44   /* current jingle standard */
45   WOCKY_JINGLE_DIALECT_V032
46 } WockyJingleDialect;
47 
48 #define WOCKY_JINGLE_DIALECT_IS_GOOGLE(d)\
49     ((d == WOCKY_JINGLE_DIALECT_GTALK3) || (d == WOCKY_JINGLE_DIALECT_GTALK4))
50 
51 /**
52  * WockyJingleState:
53  * @WOCKY_JINGLE_STATE_PENDING_CREATED: on outgoing sessions, no offer has been
54  *  sent to the peer yet.
55  * @WOCKY_JINGLE_STATE_PENDING_INITIATE_SENT: on outgoing sessions, we have sent
56  *  the session-initiate and are awaiting the peer's acknowledgement.
57  * @WOCKY_JINGLE_STATE_PENDING_INITIATED: on outgoing sessions, the peer has
58  *  received our session-initiate and we're waiting for them to accept; on
59  *  incoming sessions, the peer is waiting for us to accept.
60  * @WOCKY_JINGLE_STATE_PENDING_ACCEPT_SENT: on incoming sessions, we have sent
61  *  session-accept and are waiting for the peer to acknowledge it.
62  * @WOCKY_JINGLE_STATE_ACTIVE: the session is active.
63  * @WOCKY_JINGLE_STATE_ENDED: the session has ended. The
64  *  #WockyJingleSession::terminated signal describes how the session ended.
65  *
66  * Possible states of a #WockyJingleSession.
67  */
68 typedef enum { /*< skip >*/
69   /*< private >*/
70   WOCKY_JINGLE_STATE_INVALID = -1,
71   /*< public >*/
72   WOCKY_JINGLE_STATE_PENDING_CREATED = 0,
73   WOCKY_JINGLE_STATE_PENDING_INITIATE_SENT,
74   WOCKY_JINGLE_STATE_PENDING_INITIATED,
75   WOCKY_JINGLE_STATE_PENDING_ACCEPT_SENT,
76   WOCKY_JINGLE_STATE_ACTIVE,
77   WOCKY_JINGLE_STATE_ENDED,
78   /*< private >*/
79   WOCKY_N_JINGLE_STATES
80 } WockyJingleState;
81 
82 typedef enum { /*< skip >*/
83   WOCKY_JINGLE_ACTION_UNKNOWN,
84   WOCKY_JINGLE_ACTION_CONTENT_ACCEPT,
85   WOCKY_JINGLE_ACTION_CONTENT_ADD,
86   WOCKY_JINGLE_ACTION_CONTENT_MODIFY,
87   WOCKY_JINGLE_ACTION_CONTENT_REMOVE,
88   WOCKY_JINGLE_ACTION_CONTENT_REPLACE,
89   WOCKY_JINGLE_ACTION_CONTENT_REJECT,
90   WOCKY_JINGLE_ACTION_SESSION_ACCEPT,
91   WOCKY_JINGLE_ACTION_SESSION_INFO,
92   WOCKY_JINGLE_ACTION_SESSION_INITIATE,
93   WOCKY_JINGLE_ACTION_SESSION_TERMINATE,
94   WOCKY_JINGLE_ACTION_TRANSPORT_INFO,
95   WOCKY_JINGLE_ACTION_TRANSPORT_ACCEPT,
96   WOCKY_JINGLE_ACTION_DESCRIPTION_INFO,
97   WOCKY_JINGLE_ACTION_INFO
98 } WockyJingleAction;
99 
100 typedef enum { /*< skip >*/
101   WOCKY_JINGLE_CONTENT_SENDERS_NONE,
102   WOCKY_JINGLE_CONTENT_SENDERS_INITIATOR,
103   WOCKY_JINGLE_CONTENT_SENDERS_RESPONDER,
104   WOCKY_JINGLE_CONTENT_SENDERS_BOTH
105 } WockyJingleContentSenders;
106 
107 typedef enum { /*< skip >*/
108   JINGLE_TRANSPORT_UNKNOWN,
109   JINGLE_TRANSPORT_GOOGLE_P2P,
110   JINGLE_TRANSPORT_RAW_UDP,
111   JINGLE_TRANSPORT_ICE_UDP,
112 } WockyJingleTransportType;
113 
114 typedef enum { /*< skip >*/
115   WOCKY_JINGLE_TRANSPORT_PROTOCOL_UDP,
116   WOCKY_JINGLE_TRANSPORT_PROTOCOL_TCP
117 } WockyJingleTransportProtocol;
118 
119 typedef enum { /*< skip >*/
120   WOCKY_JINGLE_CANDIDATE_TYPE_LOCAL,
121   WOCKY_JINGLE_CANDIDATE_TYPE_STUN,
122   WOCKY_JINGLE_CANDIDATE_TYPE_RELAY
123 } WockyJingleCandidateType;
124 
125 /**
126  * WockyJingleReason:
127  * @WOCKY_JINGLE_REASON_UNKNOWN: no known reason
128  *
129  * The reason for a Jingle action occurring—specifically, the reason for
130  * terminating a call. See <ulink
131  * url="http://xmpp.org/extensions/xep-0166.html#def-reason">XEP-0166 Jingle
132  * §7.4</ulink> for definitions of the codes.
133  */
134 typedef enum
135 {
136   WOCKY_JINGLE_REASON_UNKNOWN,
137   WOCKY_JINGLE_REASON_ALTERNATIVE_SESSION,
138   WOCKY_JINGLE_REASON_BUSY,
139   WOCKY_JINGLE_REASON_CANCEL,
140   WOCKY_JINGLE_REASON_CONNECTIVITY_ERROR,
141   WOCKY_JINGLE_REASON_DECLINE,
142   WOCKY_JINGLE_REASON_EXPIRED,
143   WOCKY_JINGLE_REASON_FAILED_APPLICATION,
144   WOCKY_JINGLE_REASON_FAILED_TRANSPORT,
145   WOCKY_JINGLE_REASON_GENERAL_ERROR,
146   WOCKY_JINGLE_REASON_GONE,
147   WOCKY_JINGLE_REASON_INCOMPATIBLE_PARAMETERS,
148   WOCKY_JINGLE_REASON_MEDIA_ERROR,
149   WOCKY_JINGLE_REASON_SECURITY_ERROR,
150   WOCKY_JINGLE_REASON_SUCCESS,
151   WOCKY_JINGLE_REASON_TIMEOUT,
152   WOCKY_JINGLE_REASON_UNSUPPORTED_APPLICATIONS,
153   WOCKY_JINGLE_REASON_UNSUPPORTED_TRANSPORTS
154 } WockyJingleReason;
155 
156 
157 #endif /* __WOCKY_JINGLE_TYPES_H__ */
158