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