Android: Generate JNI code for DataChannel
Bug: webrtc:8278
Change-Id: I107c839656500971cbd3da7557e14776759c318a
Reviewed-on: https://webrtc-review.googlesource.com/25820
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20873}
diff --git a/sdk/android/api/org/webrtc/DataChannel.java b/sdk/android/api/org/webrtc/DataChannel.java
index dc64ccc..883025e 100644
--- a/sdk/android/api/org/webrtc/DataChannel.java
+++ b/sdk/android/api/org/webrtc/DataChannel.java
@@ -26,17 +26,34 @@
// Optional unsigned short in WebIDL, -1 means unspecified.
public int id = -1;
- public Init() {}
+ @CalledByNative("Init")
+ boolean getOrdered() {
+ return ordered;
+ }
- // Called only by native code.
- private Init(boolean ordered, int maxRetransmitTimeMs, int maxRetransmits, String protocol,
- boolean negotiated, int id) {
- this.ordered = ordered;
- this.maxRetransmitTimeMs = maxRetransmitTimeMs;
- this.maxRetransmits = maxRetransmits;
- this.protocol = protocol;
- this.negotiated = negotiated;
- this.id = id;
+ @CalledByNative("Init")
+ int getMaxRetransmitTimeMs() {
+ return maxRetransmitTimeMs;
+ }
+
+ @CalledByNative("Init")
+ int getMaxRetransmits() {
+ return maxRetransmits;
+ }
+
+ @CalledByNative("Init")
+ String getProtocol() {
+ return protocol;
+ }
+
+ @CalledByNative("Init")
+ boolean getNegotiated() {
+ return negotiated;
+ }
+
+ @CalledByNative("Init")
+ int getId() {
+ return id;
}
}
@@ -51,6 +68,7 @@
*/
public final boolean binary;
+ @CalledByNative("Buffer")
public Buffer(ByteBuffer data, boolean binary) {
this.data = data;
this.binary = binary;
@@ -60,23 +78,34 @@
/** Java version of C++ DataChannelObserver. */
public interface Observer {
/** The data channel's bufferedAmount has changed. */
- public void onBufferedAmountChange(long previousAmount);
+ @CalledByNative("Observer") public void onBufferedAmountChange(long previousAmount);
/** The data channel state has changed. */
- public void onStateChange();
+ @CalledByNative("Observer") public void onStateChange();
/**
* A data buffer was successfully received. NOTE: |buffer.data| will be
* freed once this function returns so callers who want to use the data
* asynchronously must make sure to copy it first.
*/
- public void onMessage(Buffer buffer);
+ @CalledByNative("Observer") public void onMessage(Buffer buffer);
}
/** Keep in sync with DataChannelInterface::DataState. */
- public enum State { CONNECTING, OPEN, CLOSING, CLOSED }
+ public enum State {
+ CONNECTING,
+ OPEN,
+ CLOSING,
+ CLOSED;
+
+ @CalledByNative("State")
+ static State fromNativeIndex(int nativeIndex) {
+ return values()[nativeIndex];
+ }
+ }
private final long nativeDataChannel;
private long nativeObserver;
+ @CalledByNative
public DataChannel(long nativeDataChannel) {
this.nativeDataChannel = nativeDataChannel;
}
@@ -123,5 +152,12 @@
private native boolean sendNative(byte[] data, boolean binary);
/** Dispose of native resources attached to this channel. */
- public native void dispose();
+ public void dispose() {
+ JniCommon.nativeReleaseRef(nativeDataChannel);
+ }
+
+ @CalledByNative
+ long getNativeDataChannel() {
+ return nativeDataChannel;
+ }
};