8000 Refactors Android plugin alongside the embedding V2 migration · hicodeboy/flutter-webrtc@f04e600 · GitHub
[go: up one dir, main page]

Skip to content

Commit f04e600

Browse files
committed
Refactors Android plugin alongside the embedding V2 migration
1 parent 0edcb27 commit f04e600

8 files changed

+3025
-2705
lines changed
Lines changed: 73 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,94 @@
11
package com.cloudwebrtc.webrtc;
22

3-
import java.nio.charset.Charset;
4-
import android.util.Base64;
5-
6-
import org.webrtc.DataChannel;
7-
import io.flutter.plugin.common.EventChannel;
83
import com.cloudwebrtc.webrtc.utils.AnyThreadSink;
94
import com.cloudwebrtc.webrtc.utils.ConstraintsMap;
5+
import io.flutter.plugin.common.BinaryMessenger;
6+
import io.flutter.plugin.common.EventChannel;
7+
import java.nio.charset.Charset;
8+
import org.webrtc.DataChannel;
109

1110
class DataChannelObserver implements DataChannel.Observer, EventChannel.StreamHandler {
12-
private final int mId;
13-
private final DataChannel mDataChannel;
14-
private final String peerConnectionId;
15-
private final FlutterWebRTCPlugin plugin;
16-
private EventChannel eventChannel;
17-
private EventChannel.EventSink eventSink;
1811

19-
DataChannelObserver(FlutterWebRTCPlugin plugin, String peerConnectionId, int id, DataChannel dataChannel) {
20-
this.peerConnectionId = peerConnectionId;
21-
mId = id;
22-
mDataChannel = dataChannel;
23-
this.plugin = plugin;
24-
this.eventChannel =
25-
new EventChannel(
26-
plugin.registrar().messenger(),
27-
"FlutterWebRTC/dataChannelEvent" + peerConnectionId + String.valueOf(id));
28-
eventChannel.setStreamHandler(this);
29-
}
12+
private final int mId;
13+
private final DataChannel mDataChannel;
3014

31-
private String dataChannelStateString(DataChannel.State dataChannelState) {
32-
switch (dataChannelState) {
33-
case CONNECTING:
34-
return "connecting";
35-
case OPEN:
36-
return "open";
37-
case CLOSING:
38-
return "closing";
39-
case CLOSED:
40-
return "closed";
41-
}
42-
return "";
43-
}
15+
private EventChannel eventChannel;
16+
private EventChannel.EventSink eventSink;
4417

45-
@Override
46-
public void onListen(Object o, EventChannel.EventSink sink) {
47-
eventSink = new AnyThreadSink(sink);
48-
}
18+
DataChannelObserver(BinaryMessenger messenger, String peerConnectionId, int id,
19+
DataChannel dataChannel) {
20+
mId = id;
21+
mDataChannel = dataChannel;
22+
eventChannel =
23+
new EventChannel(messenger, "FlutterWebRTC/dataChannelEvent" + peerConnectionId + id);
24+
eventChannel.setStreamHandler(this);
25+
}
4926

50-
@Override
51-
public void onCancel(Object o) {
52-
eventSink = null;
27+
private String dataChannelStateString(DataChannel.State dataChannelState) {
28+
switch (dataChannelState) {
29+
case CONNECTING:
30+
return "connecting";
31+
case OPEN:
32+
return "open";
33+
case CLOSING:
34+
return "closing";
35+
case CLOSED:
36+
return "closed";
5337
}
38+
return "";
39+
}
5440

55-
@Override
56-
public void onBufferedAmountChange(long amount) { }
41+
@Override
42+
public void onListen(Object o, EventChannel.EventSink sink) {
43+
eventSink = new AnyThreadSink(sink);
44+
}
5745

58-
@Override
59-
public void onStateChange() {
60-
ConstraintsMap params = new ConstraintsMap();
61-
params.putString("event", "dataChannelStateChanged");
62-
params.putInt("id", mDataChannel.id());
63-
params.putString("state", dataChannelStateString(mDataChannel.state()));
64-
sendEvent(params);
65-
}
46+
@Override
47+
public void onCancel(Object o) {
48+
eventSink = null;
49+
}
6650

67-
@Override
68-
public void onMessage(DataChannel.Buffer buffer) {
69-
ConstraintsMap params = new ConstraintsMap();
70-
params.putString("event", "dataChannelReceiveMessage");
71-
params.putInt("id", mDataChannel.id());
51+
@Override
52+
public void onBufferedAmountChange(long amount) {
53+
}
7254

73-
byte[] bytes;
74-
if (buffer.data.hasArray()) {
75-
bytes = buffer.data.array();
76-
} else {
77-
bytes = new byte[buffer.data.remaining()];
78-
buffer.data.get(bytes);
79-
}
55+
@Override
56+
public void onStateChange() {
57+
ConstraintsMap params = new ConstraintsMap();
58+
params.putString("event", "dataChannelStateChanged");
59+
params.putInt("id", mDataChannel.id());
60+
params.putString("state", dataChannelStateString(mDataChannel.state()));
61+
sendEvent(params);
62+
}
8063

81-
if (buffer.binary) {
82-
params.putString("type", "binary");
83-
params.putByte("data", bytes);
84-
} else {
85-
params.putString("type", "text");
86-
params.putString("data", new String(bytes, Charset.forName("UTF-8")));
87-
}
64+
@Override
65+
public void onMessage(DataChannel.Buffer buffer) {
66+
ConstraintsMap params = new ConstraintsMap();
67+
params.putString("event", "dataChannelReceiveMessage");
68+
params.putInt("id", mDataChannel.id());
8869

89-
sendEvent(params);
70+
byte[] bytes;
71+
if (buffer.data.hasArray()) {
72+
bytes = buffer.data.array();
73+
} else {
74+
bytes = new byte[buffer.data.remaining()];
75+
buffer.data.get(bytes);
9076
}
9177

92-
void sendEvent(ConstraintsMap params) {
93-
if(eventSink != null)
94-
eventSink.success(params.toMap());
78+
if (buffer.binary) {
79+
params.putString("type", "binary");
80+
params.putByte("data", bytes);
81+
} else {
82+
params.putString("type", "text");
83+
params.putString("data", new String(bytes, Charset.forName("UTF-8")));
84+
}
85+
86+
sendEvent(params);
87+
}
88+
89+
private void sendEvent(ConstraintsMap params) {
90+
if (eventSink != null) {
91+
eventSink.success(params.toMap());
9592
}
93+
}
9694
}

0 commit comments

Comments
 (0)
0