-
Notifications
You must be signed in to change notification settings - Fork 0
/
gopalmanager.h
211 lines (181 loc) · 8.19 KB
/
gopalmanager.h
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
/*
* Copyright (C) 2012 Igalia S.L.
*
* Author: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
*
* This file may be used under the terms of the GNU Lesser General Public
* License version 2.1, a copy of which is found in LICENSE included in the
* packaging of this file.
*/
#ifndef GOPAL_MANAGER_H
#define GOPAL_MANAGER_H
#include <gio/gio.h>
G_BEGIN_DECLS
#define GOPAL_TYPE_MANAGER \
(gopal_manager_get_type())
#define GOPAL_MANAGER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), GOPAL_TYPE_MANAGER, GopalManager))
#define GOPAL_MANAGER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), GOPAL_TYPE_MANAGER, GopalManagerClass))
#define GOPAL_IS_MANAGER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GOPAL_TYPE_MANAGER))
#define GOPAL_IS_MANAGER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), GOPAL_TYPE_MANAGER))
#define GOPAL_MANAGER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), GOPAL_TYPE_MANAGER, GopalManagerClass))
typedef struct _GopalSIPEP GopalSIPEP;
typedef struct _GopalManagerPrivate GopalManagerPrivate;
typedef struct _GopalManager GopalManager;
typedef struct _GopalManagerClass GopalManagerClass;
typedef enum {
GOPAL_STUN_CLIENT_NAT_TYPE_UNKNOWN,
GOPAL_STUN_CLIENT_NAT_TYPE_OPEN,
GOPAL_STUN_CLIENT_NAT_TYPE_CONE,
GOPAL_STUN_CLIENT_NAT_TYPE_RESTRICTED,
GOPAL_STUN_CLIENT_NAT_TYPE_PORT_RESTRICTED,
GOPAL_STUN_CLIENT_NAT_TYPE_SYMMETRIC,
GOPAL_STUN_CLIENT_NAT_TYPE_SYMMETRIC_FIREWALL,
GOPAL_STUN_CLIENT_NAT_TYPE_BLOCKED,
GOPAL_STUN_CLIENT_NAT_TYPE_PARTIAL_BLOCKED,
GOPAL_STUN_CLIENT_NAT_TYPE_END
} GopalSTUNClientNatType;
/**
* GopalCallEndReason:
* @GOPAL_CALL_END_REASON_LOCALUSER: Local endpoint application cleared call
* @GOPAL_CALL_END_REASON_NOACCEPT: Local endpoint did not accept call OnIncomingCall() = false
* @GOPAL_CALL_END_REASON_ANSWERDENIED: Local endpoint declined to answer call
* @GOPAL_CALL_END_REASON_REMOTEUSER: Remote endpoint application cleared call
* @GOPAL_CALL_END_REASON_REFUSAL: Remote endpoint refused call
* @GOPAL_CALL_END_REASON_NOANSWER: Remote endpoint did not answer in required time
* @GOPAL_CALL_END_REASON_CALLERABORT: Remote endpoint stopped calling
* @GOPAL_CALL_END_REASON_TRANSPORTFAIL: Transport error cleared call
* @GOPAL_CALL_END_REASON_CONNECTFAIL: Transport connection failed to establish call
* @GOPAL_CALL_END_REASON_GATEKEEPER: Gatekeeper has cleared call
* @GOPAL_CALL_END_REASON_NOUSER: Call failed as could not find user (in GK)
* @GOPAL_CALL_END_REASON_NOBANDWIDTH: Call failed as could not get enough bandwidth
* @GOPAL_CALL_END_REASON_CAPABILITYEXCHANGE: Could not find common capabilities
* @GOPAL_CALL_END_REASON_CALLFORWARDED: Call was forwarded using FACILITY message
* @GOPAL_CALL_END_REASON_SECURITYDENIAL: Call failed a security check and was ended
* @GOPAL_CALL_END_REASON_LOCALBUSY: Local endpoint busy
* @GOPAL_CALL_END_REASON_LOCALCONGESTION: Local endpoint congested
* @GOPAL_CALL_END_REASON_REMOTEBUSY: Remote endpoint busy
* @GOPAL_CALL_END_REASON_REMOTECONGESTION: Remote endpoint congested
* @GOPAL_CALL_END_REASON_UNREACHABLE: Could not reach the remote party
* @GOPAL_CALL_END_REASON_NOENDPOINT: The remote party is not running an endpoint
* @GOPAL_CALL_END_REASON_HOSTOFFLINE: The remote party host off line
* @GOPAL_CALL_END_REASON_TEMPORARYFAILURE: The remote failed temporarily app may retry
* @GOPAL_CALL_END_REASON_Q931CAUSE: The remote ended the call with unmapped Q.931 cause code
* @GOPAL_CALL_END_REASON_DURATIONLIMIT: Call cleared due to an enforced duration limit
* @GOPAL_CALL_END_REASON_INVALIDCONFERENCEID: Call cleared due to invalid conference ID
* @GOPAL_CALL_END_REASON_NODIALTONE: Call cleared due to missing dial tone
* @GOPAL_CALL_END_REASON_NORINGBACKTONE: Call cleared due to missing ringback tone
* @GOPAL_CALL_END_REASON_OUTOFSERVICE: Call cleared because the line is out of service,
* @GOPAL_CALL_END_REASON_ACCEPTINGCALLWAITING: Call cleared because another call is answered
* @GOPAL_CALL_END_REASON_GKADMISSIONFAILED: Call cleared because gatekeeper admission request failed.
*/
typedef enum {
GOPAL_CALL_END_REASON_LOCALUSER,
GOPAL_CALL_END_REASON_NOACCEPT,
GOPAL_CALL_END_REASON_ANSWERDENIED,
GOPAL_CALL_END_REASON_REMOTEUSER,
GOPAL_CALL_END_REASON_REFUSAL,
GOPAL_CALL_END_REASON_NOANSWER,
GOPAL_CALL_END_REASON_CALLERABORT,
GOPAL_CALL_END_REASON_TRANSPORTFAIL,
GOPAL_CALL_END_REASON_CONNECTFAIL,
GOPAL_CALL_END_REASON_GATEKEEPER,
GOPAL_CALL_END_REASON_NOUSER,
GOPAL_CALL_END_REASON_NOBANDWIDTH,
GOPAL_CALL_END_REASON_CAPABILITYEXCHANGE,
GOPAL_CALL_END_REASON_CALLFORWARDED,
GOPAL_CALL_END_REASON_SECURITYDENIAL,
GOPAL_CALL_END_REASON_LOCALBUSY,
GOPAL_CALL_END_REASON_LOCALCONGESTION,
GOPAL_CALL_END_REASON_REMOTEBUSY,
GOPAL_CALL_END_REASON_REMOTECONGESTION,
GOPAL_CALL_END_REASON_UNREACHABLE,
GOPAL_CALL_END_REASON_NOENDPOINT,
GOPAL_CALL_END_REASON_HOSTOFFLINE,
GOPAL_CALL_END_REASON_TEMPORARYFAILURE,
GOPAL_CALL_END_REASON_Q931CAUSE,
GOPAL_CALL_END_REASON_DURATIONLIMIT,
GOPAL_CALL_END_REASON_INVALIDCONFERENCEID,
GOPAL_CALL_END_REASON_NODIALTONE,
GOPAL_CALL_END_REASON_NORINGBACKTONE,
GOPAL_CALL_END_REASON_OUTOFSERVICE,
GOPAL_CALL_END_REASON_ACCEPTINGCALLWAITING,
GOPAL_CALL_END_REASON_GKADMISSIONFAILED,
GOPAL_CALL_END_REASON_MAX
} GopalCallEndReason;
struct _GopalManager {
GObject parent;
/*< private >*/
GopalManagerPrivate *priv;
};
struct _GopalManagerClass {
GObjectClass parent_class;
};
GType
gopal_manager_get_type (void) G_GNUC_CONST;
GopalManager *
gopal_manager_new (void);
GopalSTUNClientNatType
gopal_manager_set_stun_server (GopalManager *self,
const char *server);
void
gopal_manager_set_stun_server_async (GopalManager *self,
const char *server,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GopalSTUNClientNatType
gopal_manager_set_stun_server_finish (GopalManager *self,
GAsyncResult *result,
GError **error);
const char *
gopal_manager_get_stun_server (GopalManager *self);
gboolean
gopal_manager_set_translation_host (GopalManager *self,
const char *host);
GopalSIPEP *
gopal_manager_get_sip_endpoint (GopalManager *self);
void
gopal_manager_shutdown_endpoints (GopalManager *self);
gboolean
gopal_manager_setup_call (GopalManager *self,
const gchar *party_a,
const gchar *party_b,
char **token,
guint connection_options,
gpointer *user_data);
gboolean
gopal_manager_is_call_established (GopalManager *self,
const char *token);
gboolean
gopal_manager_clear_call (GopalManager *self,
const char *token,
GopalCallEndReason reason);
const char *
gopal_manager_get_end_reason_string (GopalCallEndReason reason);
void
gopal_manager_get_product_info (GopalManager *self,
gchar **name,
gchar **vendor,
gchar **version);
void
gopal_manager_set_product_info (GopalManager *self,
const gchar *name,
const gchar *vendor,
const gchar *version);
gboolean
gopal_manager_add_route_entry (GopalManager *self,
const char *spec);
void
gopal_manager_send_user_input_tone (GopalManager *self,
const char *token,
char tone);
gboolean
gopal_manager_set_video_output_device (GopalManager *self,
const char *device_name);
G_END_DECLS
#endif /* GGOPAL_MANAGER_H */