Skip to content

Commit 44c5464

Browse files
committed
integrate TransportConnectionHandler class
1 parent 5a7ac41 commit 44c5464

File tree

3 files changed

+19
-118
lines changed

3 files changed

+19
-118
lines changed

play-services-wearable/core/src/main/java/org/microg/gms/wearable/bluetooth/BluetoothConnectionThread.java

Lines changed: 16 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.google.android.gms.wearable.ConnectionConfiguration;
2020

2121
import org.microg.gms.wearable.MessageHandler;
22+
import org.microg.gms.wearable.TransportConnectionHandler;
2223
import org.microg.gms.wearable.WearableConnection;
2324
import org.microg.gms.wearable.WearableImpl;
2425
import org.microg.gms.wearable.proto.Connect;
@@ -209,11 +210,21 @@ private void connect() throws IOException, InterruptedException {
209210
isConnected = true;
210211
markActivity();
211212

212-
wearableConnection = new BluetoothWearableConnection(
213-
socket, config.nodeId,
214-
new ConnectionListener(context, config, wearableImpl, this)
215-
);
216-
wearableConnection.run();
213+
BluetoothWearableConnection btConn =
214+
new BluetoothWearableConnection(socket, config.nodeId,
215+
new WearableConnection.Listener() {
216+
public void onConnected(WearableConnection c) {}
217+
public void onMessage(WearableConnection c, RootMessage m) {}
218+
public void onDisconnected() {}
219+
});
220+
wearableConnection = btConn;
221+
222+
if (!btConn.handshake()) {
223+
Log.e(TAG, "Handshake failed");
224+
return;
225+
}
226+
227+
new TransportConnectionHandler(wearableImpl, config).handle(btConn);
217228
}
218229

219230
@RequiresPermission(Manifest.permission.BLUETOOTH_CONNECT)
@@ -468,57 +479,4 @@ public void close(){
468479
signalRetry();
469480
interrupt();
470481
}
471-
472-
private static class ConnectionListener implements WearableConnection.Listener {
473-
private final Context context;
474-
private final ConnectionConfiguration config;
475-
private final WearableImpl wearableImpl;
476-
private Connect peerConnect;
477-
private WearableConnection connection;
478-
479-
private final BluetoothConnectionThread thread;
480-
481-
private MessageHandler messageHandler;
482-
483-
public ConnectionListener(Context context, ConnectionConfiguration config, WearableImpl wearableImpl, BluetoothConnectionThread thread) {
484-
this.context = context;
485-
this.config = config;
486-
this.wearableImpl = wearableImpl;
487-
this.thread = thread;
488-
}
489-
490-
@Override
491-
public void onConnected(WearableConnection connection) {
492-
Log.d(TAG, "Wearable connection established for " + config.address);
493-
thread.markActivity();
494-
thread.isConnected = true;
495-
496-
this.connection = connection;
497-
498-
BluetoothWearableConnection btConnection = (BluetoothWearableConnection) connection;
499-
this.peerConnect = btConnection.getPeerConnect();
500-
501-
this.messageHandler = new MessageHandler(context, wearableImpl, config);
502-
503-
wearableImpl.onConnectReceived(connection, config.nodeId, peerConnect);
504-
}
505-
506-
@Override
507-
public void onMessage(WearableConnection connection, RootMessage message) {
508-
Log.d(TAG, "Message received from " + config.address + ": " + message.toString());
509-
thread.markActivity();
510-
511-
if (peerConnect != null && messageHandler != null)
512-
messageHandler.handleMessage(connection, peerConnect.id, message);
513-
}
514-
515-
@Override
516-
public void onDisconnected() {
517-
Log.d(TAG, "Wearable connection disconnected for " + config.address);
518-
thread.isConnected = false;
519-
if (connection != null && peerConnect != null) {
520-
wearableImpl.onDisconnectReceived(connection, peerConnect);
521-
}
522-
}
523-
}
524482
}

play-services-wearable/core/src/main/java/org/microg/gms/wearable/bluetooth/BluetoothWearableConnection.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public BluetoothWearableConnection(BluetoothSocket socket, String localNodeId, L
6262
}
6363
}
6464

65-
private boolean handshake() {
65+
public boolean handshake() {
6666
Log.d(TAG, "Starting handshake, local node ID: " + localNodeId);
6767

6868
final AtomicBoolean timedOut = new AtomicBoolean(false);

play-services-wearable/core/src/main/java/org/microg/gms/wearable/network/NetworkConnectionThread.java

Lines changed: 2 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.microg.gms.wearable.MessageHandler;
99
import org.microg.gms.wearable.SocketWearableConnection;
10+
import org.microg.gms.wearable.TransportConnectionHandler;
1011
import org.microg.gms.wearable.WearableConnection;
1112
import org.microg.gms.wearable.WearableImpl;
1213
import org.microg.gms.wearable.WearableReader;
@@ -101,25 +102,7 @@ private void connect() throws IOException {
101102
Log.d(TAG, "Connected to " + config.address);
102103

103104
SocketWearableConnection raw = new SocketWearableConnection(socket, null);
104-
MessageHandler msgHandler = new MessageHandler(context, wearable, config);
105-
WearableWriter writer = new WearableWriter(config.address, raw);
106-
QueueingConnection facade = new QueueingConnection(writer);
107-
WearableReader reader = new WearableReader(config.address, raw, facade, msgHandler);
108-
109-
activeWriter = writer;
110-
111-
writer.start();
112-
reader.start();
113-
114-
reader.awaitFinished();
115-
116-
writer.close();
117-
writer.awaitFinished();
118-
119-
try {
120-
raw.close();
121-
} catch (IOException ignore) {}
122-
105+
new TransportConnectionHandler(wearable, config).handle(raw);
123106
activeWriter = null;
124107
}
125108

@@ -230,44 +213,4 @@ private void teardown() {
230213
activeSocket = null;
231214
}
232215
}
233-
234-
private static final class QueueingConnection extends WearableConnection {
235-
private static final Listener NO_OP = new Listener() {
236-
@Override
237-
public void onConnected(WearableConnection connection) {}
238-
239-
@Override
240-
public void onMessage(WearableConnection connection, RootMessage message) {}
241-
242-
@Override
243-
public void onDisconnected() {}
244-
};
245-
246-
private final WearableWriter writer;
247-
248-
QueueingConnection(WearableWriter writer) {
249-
super(NO_OP);
250-
this.writer = writer;
251-
}
252-
253-
@Override
254-
public void writeMessage(RootMessage message) throws IOException {
255-
writer.enqueue(message);
256-
}
257-
258-
@Override
259-
protected void writeMessagePiece(MessagePiece piece) throws IOException {
260-
throw new UnsupportedOperationException("write-only facade");
261-
}
262-
263-
@Override
264-
protected MessagePiece readMessagePiece() throws IOException {
265-
throw new UnsupportedOperationException("write-only facade");
266-
}
267-
268-
@Override
269-
public void close() throws IOException {
270-
writer.close();
271-
}
272-
}
273216
}

0 commit comments

Comments
 (0)