Adding callback for file pushed.

This commit is contained in:
Samuel Carlsson 2014-03-25 15:52:32 +01:00
parent 0e94c45791
commit 89403cb126
3 changed files with 23 additions and 1 deletions

View File

@ -1,9 +1,13 @@
package se.vidstige.jadb.server; package se.vidstige.jadb.server;
import java.io.ByteArrayOutputStream;
/** /**
* Created by vidstige on 20/03/14. * Created by vidstige on 20/03/14.
*/ */
public interface AdbDeviceResponder { public interface AdbDeviceResponder {
String getSerial(); String getSerial();
String getType(); String getType();
void filePushed(String path, int mode, ByteArrayOutputStream buffer);
} }

View File

@ -11,6 +11,7 @@ import java.nio.charset.Charset;
public class AdbProtocolHandler implements Runnable { public class AdbProtocolHandler implements Runnable {
private final Socket socket; private final Socket socket;
private final AdbResponder responder; private final AdbResponder responder;
private AdbDeviceResponder selected;
public AdbProtocolHandler(Socket socket, AdbResponder responder) { public AdbProtocolHandler(Socket socket, AdbResponder responder) {
this.socket = socket; this.socket = socket;
@ -61,6 +62,7 @@ public class AdbProtocolHandler implements Runnable {
else if ("host:transport-any".equals(command)) else if ("host:transport-any".equals(command))
{ {
// TODO: Check so that exactly one device is selected. // TODO: Check so that exactly one device is selected.
selected = responder.getDevices().get(0);
output.writeBytes("OKAY"); output.writeBytes("OKAY");
} }
else if ("host:devices".equals(command)) { else if ("host:devices".equals(command)) {
@ -76,7 +78,7 @@ public class AdbProtocolHandler implements Runnable {
else if (command.startsWith("host:transport:")) else if (command.startsWith("host:transport:"))
{ {
String serial = command.substring("host:transport:".length()); String serial = command.substring("host:transport:".length());
findDevice(serial); selected = findDevice(serial);
output.writeBytes("OKAY"); output.writeBytes("OKAY");
} }
else if ("sync:".equals(command)) { else if ("sync:".equals(command)) {
@ -114,10 +116,20 @@ public class AdbProtocolHandler implements Runnable {
if ("SEND".equals(id)) if ("SEND".equals(id))
{ {
String remotePath = readString(input, length); 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); SyncTransport transport = new SyncTransport(output, input);
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
transport.readChunksTo(buffer); transport.readChunksTo(buffer);
transport.sendStatus("OKAY", 0); // 0 = ignored transport.sendStatus("OKAY", 0); // 0 = ignored
selected.filePushed(path, mode, buffer);
} }
else throw new JadbException("Unknown sync id " + id); else throw new JadbException("Unknown sync id " + id);
} }

View File

@ -4,6 +4,7 @@ import se.vidstige.jadb.server.AdbDeviceResponder;
import se.vidstige.jadb.server.AdbResponder; import se.vidstige.jadb.server.AdbResponder;
import se.vidstige.jadb.server.AdbServer; import se.vidstige.jadb.server.AdbServer;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -64,5 +65,10 @@ public class FakeAdbServer implements AdbResponder {
public String getType() { public String getType() {
return "device"; return "device";
} }
@Override
public void filePushed(String path, int mode, ByteArrayOutputStream buffer) {
}
} }
} }