1 /*
2 LinphoneProxyConfigImpl.java
3 Copyright (C) 2010  Belledonne Communications, Grenoble, France
4 
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9 
10 This program 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
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18  */
19 package org.linphone.core;
20 
21 import org.linphone.core.LinphoneCore.RegistrationState;
22 
23 class LinphoneProxyConfigImpl implements LinphoneProxyConfig {
24 
25 	protected final long nativePtr;
26 	protected LinphoneCoreImpl mCore;
27 	Object userData;
28 
finalize(long ptr)29 	private native void finalize(long ptr);
getState(long nativePtr)30 	private native int getState(long nativePtr);
setExpires(long nativePtr, int delay)31 	private native void setExpires(long nativePtr, int delay);
getExpires(long nativePtr)32 	private native int getExpires(long nativePtr);
createProxyConfig( long nativePtr)33 	private native long createProxyConfig( long nativePtr);
34 
LinphoneProxyConfigImpl(LinphoneCoreImpl core,String identity,String proxy,String route, boolean enableRegister)35 	protected LinphoneProxyConfigImpl(LinphoneCoreImpl core,String identity,String proxy,String route, boolean enableRegister) throws LinphoneCoreException {
36 		mCore=core;
37 		nativePtr = createProxyConfig(core.nativePtr);
38 		setIdentity(identity);
39 		setProxy(proxy);
40 		setRoute(route);
41 		enableRegister(enableRegister);
42 	}
43 
LinphoneProxyConfigImpl(LinphoneCoreImpl core)44 	protected LinphoneProxyConfigImpl(LinphoneCoreImpl core)  {
45 		mCore=core;
46 		nativePtr = createProxyConfig(core.nativePtr);
47 	}
48 	/*reserved for JNI */
LinphoneProxyConfigImpl(LinphoneCoreImpl core, long aNativePtr)49 	protected LinphoneProxyConfigImpl(LinphoneCoreImpl core, long aNativePtr)  {
50 		mCore=core;
51 		nativePtr = aNativePtr;
52 	}
53 
isValid()54 	private void isValid() {
55 		if (nativePtr == 0) {
56 			throw new RuntimeException("proxy config removed");
57 		}
58 	}
59 
finalize()60 	protected void finalize() throws Throwable {
61 		if (nativePtr != 0) {
62 			finalize(nativePtr);
63 		}
64 		super.finalize();
65 	}
newLinphoneProxyConfig()66 	private native long newLinphoneProxyConfig();
67 
edit(long ptr)68 	private native void edit(long ptr);
done(long ptr)69 	private native void done(long ptr);
70 
setIdentity(long ptr,String identity)71 	private native void setIdentity(long ptr,String identity);
getIdentity(long ptr)72 	private native String getIdentity(long ptr);
setAddress(long ptr, long address)73 	private native void setAddress(long ptr, long address);
getAddress(long ptr)74 	private native long getAddress(long ptr);
setProxy(long ptr,String proxy)75 	private native int setProxy(long ptr,String proxy);
getProxy(long ptr)76 	private native String getProxy(long ptr);
77 
78 
enableRegister(long ptr,boolean value)79 	private native void enableRegister(long ptr,boolean value);
isRegisterEnabled(long ptr)80 	private native boolean isRegisterEnabled(long ptr);
81 
isRegistered(long ptr)82 	private native boolean isRegistered(long ptr);
setDialPrefix(long ptr, String prefix)83 	private native void setDialPrefix(long ptr, String prefix);
getDialPrefix(long ptr)84 	private native String getDialPrefix(long ptr);
85 
normalizePhoneNumber(long ptr,String number)86 	private native String normalizePhoneNumber(long ptr,String number);
normalizeSipUri(long ptr,String username)87 	private native long normalizeSipUri(long ptr,String username);
88 
getDomain(long ptr)89 	private native String getDomain(long ptr);
90 
setDialEscapePlus(long ptr, boolean value)91 	private native void setDialEscapePlus(long ptr, boolean value);
getDialEscapePlus(long ptr)92 	private native boolean getDialEscapePlus(long ptr);
93 
getRoute(long ptr)94 	private native String getRoute(long ptr);
setRoute(long ptr,String uri)95 	private native int setRoute(long ptr,String uri);
enablePublish(long ptr,boolean enable)96 	private native void enablePublish(long ptr,boolean enable);
publishEnabled(long ptr)97 	private native boolean publishEnabled(long ptr);
setContactParameters(long ptr, String params)98 	private native void setContactParameters(long ptr, String params);
99 
lookupCCCFromIso(long nativePtr, String iso)100 	private native int lookupCCCFromIso(long nativePtr, String iso);
lookupCCCFromE164(long nativePtr, String e164)101 	private native int lookupCCCFromE164(long nativePtr, String e164);
102 
getNatPolicy(long nativePtr)103 	private native Object getNatPolicy(long nativePtr);
setNatPolicy(long nativePtr, long natpolicy)104 	private native void setNatPolicy(long nativePtr, long natpolicy);
105 
106 
enableRegister(boolean value)107 	public LinphoneProxyConfig enableRegister(boolean value) {
108 		isValid();
109 		enableRegister(nativePtr,value);
110 		return this;
111 	}
112 
done()113 	public void done() {
114 		isValid();
115 		Object mutex=mCore!=null ? mCore : this;
116 		synchronized(mutex){
117 			done(nativePtr);
118 		}
119 	}
120 
edit()121 	public LinphoneProxyConfig edit() {
122 		isValid();
123 		Object mutex=mCore!=null ? mCore : this;
124 		synchronized(mutex){
125 			edit(nativePtr);
126 		}
127 		return this;
128 	}
129 
getNatPolicy()130 	public LinphoneNatPolicy getNatPolicy() {
131 		isValid();
132 		return (LinphoneNatPolicy)getNatPolicy(nativePtr);
133 	}
134 
setNatPolicy(LinphoneNatPolicy natpolicy)135 	public void setNatPolicy(LinphoneNatPolicy natpolicy) {
136 		isValid();
137 		setNatPolicy(nativePtr, ((LinphoneNatPolicyImpl)natpolicy).mNativePtr);
138 	}
139 
setIdentity(String identity)140 	public void setIdentity(String identity) throws LinphoneCoreException {
141 		isValid();
142 		setIdentity(nativePtr,identity);
143 	}
144 
setAddress(LinphoneAddress address)145 	public void setAddress(LinphoneAddress address) throws LinphoneCoreException {
146 		isValid();
147 		setAddress(nativePtr,((LinphoneAddressImpl)address).nativePtr);
148 	}
149 
setProxy(String proxyUri)150 	public void setProxy(String proxyUri) throws LinphoneCoreException {
151 		isValid();
152 		if (setProxy(nativePtr,proxyUri)!=0) {
153 			throw new LinphoneCoreException("Bad proxy address ["+proxyUri+"]");
154 		}
155 	}
normalizePhoneNumber(String number)156 	public String normalizePhoneNumber(String number) {
157 		isValid();
158 		return normalizePhoneNumber(nativePtr,number);
159 	}
normalizeSipUri(String username)160 	public LinphoneAddress normalizeSipUri(String username) {
161 		isValid();
162 		long ptr = normalizeSipUri(nativePtr,username);
163 		if (ptr==0) {
164 			return null;
165 		} else {
166 			return new LinphoneAddressImpl(ptr,LinphoneAddressImpl.WrapMode.FromConst);
167 		}
168 	}
setDialPrefix(String prefix)169 	public void setDialPrefix(String prefix) {
170 		isValid();
171 		setDialPrefix(nativePtr, prefix);
172 	}
getDialPrefix()173 	public String getDialPrefix() {
174 		isValid();
175 		return getDialPrefix(nativePtr);
176 	}
getDomain()177 	public String getDomain() {
178 		isValid();
179 		return getDomain(nativePtr);
180 	}
setDialEscapePlus(boolean value)181 	public void setDialEscapePlus(boolean value) {
182 		isValid();
183 		setDialEscapePlus(nativePtr,value);
184 	}
getDialEscapePlus()185 	public boolean getDialEscapePlus() {
186 		isValid();
187 		return getDialEscapePlus(nativePtr);
188 	}
getIdentity()189 	public String getIdentity() {
190 		isValid();
191 		return getIdentity(nativePtr);
192 	}
getAddress()193 	public LinphoneAddress getAddress() {
194 		isValid();
195 		long ptr = getAddress(nativePtr);
196 		if (ptr==0) {
197 			return null;
198 		} else {
199 			return new LinphoneAddressImpl(ptr,LinphoneAddressImpl.WrapMode.FromConst);
200 		}
201 	}
getProxy()202 	public String getProxy() {
203 		isValid();
204 		return getProxy(nativePtr);
205 	}
isRegistered()206 	public boolean isRegistered() {
207 		isValid();
208 		return isRegistered(nativePtr);
209 	}
registerEnabled()210 	public boolean registerEnabled() {
211 		isValid();
212 		return isRegisterEnabled(nativePtr);
213 	}
getRoute()214 	public String getRoute() {
215 		isValid();
216 		return getRoute(nativePtr);
217 	}
setRoute(String routeUri)218 	public void setRoute(String routeUri) throws LinphoneCoreException {
219 		isValid();
220 		if (setRoute(nativePtr, routeUri) != 0) {
221 			throw new LinphoneCoreException("cannot set route ["+routeUri+"]");
222 		}
223 	}
enablePublish(boolean enable)224 	public void enablePublish(boolean enable) {
225 		isValid();
226 		enablePublish(nativePtr,enable);
227 	}
getState()228 	public RegistrationState getState() {
229 		isValid();
230 		return RegistrationState.fromInt(getState(nativePtr));
231 	}
232 
setExpires(int delay)233 	public void setExpires(int delay) {
234 		isValid();
235 		setExpires(nativePtr, delay);
236 	}
getExpires()237 	public int getExpires() {
238 		isValid();
239 		return getExpires(nativePtr);
240 	}
publishEnabled()241 	public boolean publishEnabled() {
242 		isValid();
243 		return publishEnabled(nativePtr);
244 	}
245 	@Override
setContactParameters(String params)246 	public void setContactParameters(String params) {
247 		isValid();
248 		setContactParameters(nativePtr, params);
249 	}
250 	@Override
lookupCCCFromIso(String iso)251 	public int lookupCCCFromIso(String iso) {
252 		isValid();
253 		return lookupCCCFromIso(nativePtr, iso);
254 	}
255 	@Override
lookupCCCFromE164(String e164)256 	public int lookupCCCFromE164(String e164) {
257 		isValid();
258 		return lookupCCCFromE164(nativePtr, e164);
259 	}
getError(long nativeptr)260 	private native int getError(long nativeptr);
261 	@Override
getError()262 	public Reason getError() {
263 		isValid();
264 		return Reason.fromInt(getError(nativePtr));
265 	}
setPrivacy(long nativePtr, int mask)266 	private native void setPrivacy(long nativePtr, int mask);
267 	@Override
setPrivacy(int privacy_mask)268 	public void setPrivacy(int privacy_mask) {
269 		isValid();
270 		setPrivacy(nativePtr,privacy_mask);
271 	}
272 
getPrivacy(long nativePtr)273 	private native int getPrivacy(long nativePtr);
274 	@Override
getPrivacy()275 	public int getPrivacy() {
276 		isValid();
277 		return getPrivacy(nativePtr);
278 	}
279 
enableAvpf(long nativePtr, boolean enable)280 	private native void enableAvpf(long nativePtr, boolean enable);
281 	@Override
enableAvpf(boolean enable)282 	public void enableAvpf(boolean enable) {
283 		isValid();
284 		enableAvpf(nativePtr, enable);
285 	}
286 
avpfEnabled(long nativePtr)287 	private native boolean avpfEnabled(long nativePtr);
288 	@Override
avpfEnabled()289 	public boolean avpfEnabled() {
290 		isValid();
291 		return avpfEnabled(nativePtr);
292 	}
293 
setAvpfRRInterval(long nativePtr, int interval)294 	private native void setAvpfRRInterval(long nativePtr, int interval);
295 	@Override
setAvpfRRInterval(int interval)296 	public void setAvpfRRInterval(int interval) {
297 		isValid();
298 		setAvpfRRInterval(nativePtr, interval);
299 	}
300 
getAvpfRRInterval(long nativePtr)301 	private native int getAvpfRRInterval(long nativePtr);
302 	@Override
getAvpfRRInterval()303 	public int getAvpfRRInterval() {
304 		isValid();
305 		return getAvpfRRInterval(nativePtr);
306 	}
307 
getContactParameters(long ptr)308 	private native String getContactParameters(long ptr);
309 	@Override
getContactParameters()310 	public String getContactParameters() {
311 		isValid();
312 		return getContactParameters(nativePtr);
313 	}
314 
setContactUriParameters(long ptr, String params)315 	private native void setContactUriParameters(long ptr, String params);
316 	@Override
setContactUriParameters(String params)317 	public void setContactUriParameters(String params) {
318 		isValid();
319 		setContactUriParameters(nativePtr,params);
320 	}
321 
getContactUriParameters(long ptr)322 	private native String getContactUriParameters(long ptr);
323 	@Override
getContactUriParameters()324 	public String getContactUriParameters() {
325 		isValid();
326 		return getContactUriParameters(nativePtr);
327 	}
328 
getErrorInfo(long nativePtr)329 	private native long getErrorInfo(long nativePtr);
330 
331 	@Override
getErrorInfo()332 	public ErrorInfo getErrorInfo() {
333 		return new ErrorInfoImpl(getErrorInfo(nativePtr));
334 	}
335 
enableQualityReporting(long nativePtr, boolean enable)336 	private native void enableQualityReporting(long nativePtr, boolean enable);
337 	@Override
enableQualityReporting(boolean enable)338 	public void enableQualityReporting(boolean enable) {
339 		isValid();
340 		enableQualityReporting(nativePtr, enable);
341 	}
342 
qualityReportingEnabled(long nativePtr)343 	private native boolean qualityReportingEnabled(long nativePtr);
344 	@Override
qualityReportingEnabled()345 	public boolean qualityReportingEnabled() {
346 		isValid();
347 		return avpfEnabled(nativePtr);
348 	}
349 
setQualityReportingInterval(long nativePtr, int interval)350 	private native void setQualityReportingInterval(long nativePtr, int interval);
351 	@Override
setQualityReportingInterval(int interval)352 	public void setQualityReportingInterval(int interval) {
353 		isValid();
354 		setQualityReportingInterval(nativePtr, interval);
355 	}
getQualityReportingInterval(long nativePtr)356 	private native int getQualityReportingInterval(long nativePtr);
357 	@Override
getQualityReportingInterval()358 	public int getQualityReportingInterval() {
359 		isValid();
360 		return getQualityReportingInterval(nativePtr);
361 	}
362 
setQualityReportingCollector(long nativePtr, String collector)363 	private native void setQualityReportingCollector(long nativePtr, String collector);
364 	@Override
setQualityReportingCollector(String collector)365 	public void setQualityReportingCollector(String collector) {
366 		isValid();
367 		setQualityReportingCollector(nativePtr, collector);
368 	}
getQualityReportingCollector(long nativePtr)369 	private native String getQualityReportingCollector(long nativePtr);
370 	@Override
getQualityReportingCollector()371 	public String getQualityReportingCollector() {
372 
373 		isValid();
374 		return getQualityReportingCollector(nativePtr);
375 	}
376 
setRealm(long nativePtr, String realm)377 	private native void setRealm(long nativePtr, String realm);
378 	@Override
setRealm(String realm)379 	public void setRealm(String realm) {
380 		isValid();
381 		setRealm(nativePtr, realm);
382 	}
getRealm(long nativePtr)383 	private native String getRealm(long nativePtr);
384 	@Override
getRealm()385 	public String getRealm() {
386 
387 		isValid();
388 		return getRealm(nativePtr);
389 	}
390 
setPublishExpires(long nativePtr, int expires)391 	private native void setPublishExpires(long nativePtr, int expires);
392 	@Override
setPublishExpires(int expires)393 	public void setPublishExpires(int expires) {
394 		isValid();
395 		setPublishExpires(nativePtr, expires);
396 	}
getPublishExpires(long nativePtr)397 	private native int getPublishExpires(long nativePtr);
398 	@Override
getPublishExpires()399 	public int getPublishExpires() {
400 		isValid();
401 		return getPublishExpires(nativePtr);
402 	}
403 
isPhoneNumber(long nativePtr,String username)404 	private native boolean isPhoneNumber(long nativePtr,String username);
405 	@Override
isPhoneNumber(String username)406 	public boolean isPhoneNumber(String username){
407 		return isPhoneNumber(nativePtr,username);
408 	}
409 
410 	@Override
setUserData(Object obj)411 	public void setUserData(Object obj) {
412 		userData = obj;
413 	}
414 	@Override
getUserData()415 	public Object getUserData() {
416 		return userData;
417 	}
418 
setCustomHeader(long ptr, String name, String value)419 	private native void setCustomHeader(long ptr, String name, String value);
420 	@Override
setCustomHeader(String name, String value)421 	public void setCustomHeader(String name, String value){
422 		setCustomHeader(nativePtr, name, value);
423 	}
424 
getCustomHeader(long ptr, String name)425 	private native String getCustomHeader(long ptr, String name);
426 	@Override
getCustomHeader(String name)427 	public String getCustomHeader(String name){
428 		return getCustomHeader(nativePtr, name);
429 	}
430 
refreshRegister(long ptr)431 	private native void refreshRegister(long ptr);
432 	@Override
refreshRegister()433 	public void refreshRegister() {
434 		refreshRegister(nativePtr);
435 	}
436 
pauseRegister(long prt)437 	private native void pauseRegister(long prt);
438 	@Override
pauseRegister()439 	public void pauseRegister() {
440 	pauseRegister(nativePtr);
441 	}
442 
443 }
444