From 89403cb126c67ee1c29ea8ebd57879f77b2bcb85 Mon Sep 17 00:00:00 2001 From: Samuel Carlsson Date: Tue, 25 Mar 2014 15:52:32 +0100 Subject: [PATCH] Adding callback for file pushed. --- .../vidstige/jadb/server/AdbDeviceResponder.java | 4 ++++ .../vidstige/jadb/server/AdbProtocolHandler.java | 14 +++++++++++++- .../se/vidstige/jadb/test/fakes/FakeAdbServer.java | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/se/vidstige/jadb/server/AdbDeviceResponder.java b/src/se/vidstige/jadb/server/AdbDeviceResponder.java index 6dc8ad1..6e09fd2 100644 --- a/src/se/vidstige/jadb/server/AdbDeviceResponder.java +++ b/src/se/vidstige/jadb/server/AdbDeviceResponder.java @@ -1,9 +1,13 @@ package se.vidstige.jadb.server; +import java.io.ByteArrayOutputStream; + /** * Created by vidstige on 20/03/14. */ public interface AdbDeviceResponder { String getSerial(); String getType(); + + void filePushed(String path, int mode, ByteArrayOutputStream buffer); } diff --git a/src/se/vidstige/jadb/server/AdbProtocolHandler.java b/src/se/vidstige/jadb/server/AdbProtocolHandler.java index 29e7091..65a7aa5 100644 --- a/src/se/vidstige/jadb/server/AdbProtocolHandler.java +++ b/src/se/vidstige/jadb/server/AdbProtocolHandler.java @@ -11,6 +11,7 @@ import java.nio.charset.Charset; public class AdbProtocolHandler implements Runnable { private final Socket socket; private final AdbResponder responder; + private AdbDeviceResponder selected; public AdbProtocolHandler(Socket socket, AdbResponder responder) { this.socket = socket; @@ -61,6 +62,7 @@ public class AdbProtocolHandler implements Runnable { else if ("host:transport-any".equals(command)) { // TODO: Check so that exactly one device is selected. + selected = responder.getDevices().get(0); output.writeBytes("OKAY"); } else if ("host:devices".equals(command)) { @@ -76,7 +78,7 @@ public class AdbProtocolHandler implements Runnable { else if (command.startsWith("host:transport:")) { String serial = command.substring("host:transport:".length()); - findDevice(serial); + selected = findDevice(serial); output.writeBytes("OKAY"); } else if ("sync:".equals(command)) { @@ -114,10 +116,20 @@ public class AdbProtocolHandler implements Runnable { if ("SEND".equals(id)) { String remotePath = readString(input, length); + int idx = remotePath.lastIndexOf(','); + String path = remotePath; + int mode = 0666; + if (idx > 0) + { + path = remotePath.substring(0, idx); + mode = Integer.parseInt(remotePath.substring(idx + 1)); + } SyncTransport transport = new SyncTransport(output, input); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); transport.readChunksTo(buffer); transport.sendStatus("OKAY", 0); // 0 = ignored + + selected.filePushed(path, mode, buffer); } else throw new JadbException("Unknown sync id " + id); } diff --git a/test/se/vidstige/jadb/test/fakes/FakeAdbServer.java b/test/se/vidstige/jadb/test/fakes/FakeAdbServer.java index 11ec23e..80d7ea0 100644 --- a/test/se/vidstige/jadb/test/fakes/FakeAdbServer.java +++ b/test/se/vidstige/jadb/test/fakes/FakeAdbServer.java @@ -4,6 +4,7 @@ import se.vidstige.jadb.server.AdbDeviceResponder; import se.vidstige.jadb.server.AdbResponder; import se.vidstige.jadb.server.AdbServer; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -64,5 +65,10 @@ public class FakeAdbServer implements AdbResponder { public String getType() { return "device"; } + + @Override + public void filePushed(String path, int mode, ByteArrayOutputStream buffer) { + + } } }