Throw IllegalStateException if native objects are used after dispose.

This makes it easier to debug issues related to double dispose /
use after dispose.

Bug: webrtc:7566, webrtc:8297
Change-Id: I07429b2b794deabb62b5f3ea1cf92eea6f66a149
Reviewed-on: https://webrtc-review.googlesource.com/102540
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Paulina Hensman <phensman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24894}
This commit is contained in:
Sami Kalliomäki
2018-09-28 14:38:21 +02:00
committed by Commit Bot
parent dca5a2ca73
commit ee05e90297
15 changed files with 213 additions and 35 deletions

View File

@ -12,20 +12,30 @@ package org.webrtc;
/** Java wrapper for a C++ TurnCustomizer. */
public class TurnCustomizer {
final long nativeTurnCustomizer;
private long nativeTurnCustomizer;
public TurnCustomizer(long nativeTurnCustomizer) {
this.nativeTurnCustomizer = nativeTurnCustomizer;
}
public void dispose() {
checkTurnCustomizerExists();
nativeFreeTurnCustomizer(nativeTurnCustomizer);
nativeTurnCustomizer = 0;
}
private static native void nativeFreeTurnCustomizer(long turnCustomizer);
/** Return a pointer to webrtc::TurnCustomizer. */
@CalledByNative
long getNativeTurnCustomizer() {
checkTurnCustomizerExists();
return nativeTurnCustomizer;
}
private void checkTurnCustomizerExists() {
if (nativeTurnCustomizer == 0) {
throw new IllegalStateException("TurnCustomizer has been disposed.");
}
}
}