mirror of
https://github.com/revanced/jadb.git
synced 2025-02-11 09:36:48 +01:00
Refactor: Now expected serial is stated in the test for added clarity.
This commit is contained in:
parent
1ff8504e3d
commit
59cc2e9d1e
@ -4,4 +4,6 @@ package se.vidstige.jadb.server;
|
|||||||
* Created by vidstige on 20/03/14.
|
* Created by vidstige on 20/03/14.
|
||||||
*/
|
*/
|
||||||
public interface AdbDeviceResponder {
|
public interface AdbDeviceResponder {
|
||||||
|
String getSerial();
|
||||||
|
String getType();
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,13 @@ import java.net.Socket;
|
|||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
public class AdbProtocolHandler implements Runnable {
|
public class AdbProtocolHandler implements Runnable {
|
||||||
private Socket socket;
|
private final Socket socket;
|
||||||
|
private final AdbResponder responder;
|
||||||
|
|
||||||
public AdbProtocolHandler(Socket socket) {
|
public AdbProtocolHandler(Socket socket, AdbResponder responder) {
|
||||||
this.socket = socket;
|
this.socket = socket;
|
||||||
}
|
this.responder = responder;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
@ -28,34 +30,33 @@ public class AdbProtocolHandler implements Runnable {
|
|||||||
byte[] buffer = new byte[4];
|
byte[] buffer = new byte[4];
|
||||||
input.readFully(buffer);
|
input.readFully(buffer);
|
||||||
String encodedLength = new String(buffer, Charset.forName("utf-8"));
|
String encodedLength = new String(buffer, Charset.forName("utf-8"));
|
||||||
System.out.println("DEBUG: " + encodedLength);
|
|
||||||
int length = Integer.parseInt(encodedLength, 16);
|
int length = Integer.parseInt(encodedLength, 16);
|
||||||
|
|
||||||
buffer = new byte[length];
|
buffer = new byte[length];
|
||||||
input.readFully(buffer);
|
input.readFully(buffer);
|
||||||
String command = new String(buffer, Charset.forName("utf-8"));
|
String command = new String(buffer, Charset.forName("utf-8"));
|
||||||
System.out.println("Command: " + command);
|
|
||||||
|
responder.onCommand(command);
|
||||||
|
|
||||||
if ("host:version".equals(command)) {
|
if ("host:version".equals(command)) {
|
||||||
output.write("OKAY");
|
output.write("OKAY");
|
||||||
send(output, "001F"); // version. required to be 31
|
send(output, String.format("%04x", responder.getVersion()));
|
||||||
System.out.println("OK");
|
|
||||||
}
|
}
|
||||||
else if ("host:transport-any".equals(command))
|
else if ("host:transport-any".equals(command))
|
||||||
{
|
{
|
||||||
output.write("OKAY");
|
output.write("OKAY");
|
||||||
System.out.println("OK");
|
|
||||||
}
|
}
|
||||||
else if ("host:devices".equals(command)) {
|
else if ("host:devices".equals(command)) {
|
||||||
output.write("OKAY");
|
output.write("OKAY");
|
||||||
send(output, "X\tdevice\nY\tdevice");
|
for (AdbDeviceResponder d : responder.getDevices())
|
||||||
System.out.println("OK");
|
{
|
||||||
|
send(output, d.getSerial() + "\t" + d.getType() + "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
output.write("FAIL");
|
output.write("FAIL");
|
||||||
send(output, "Unknown command: " + command);
|
send(output, "Unknown command: " + command);
|
||||||
System.out.println("FAIL");
|
|
||||||
}
|
}
|
||||||
output.flush();
|
output.flush();
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
package se.vidstige.jadb.server;
|
package se.vidstige.jadb.server;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by vidstige on 20/03/14.
|
* Created by vidstige on 20/03/14.
|
||||||
*/
|
*/
|
||||||
public interface AdbResponder {
|
public interface AdbResponder {
|
||||||
|
void onCommand(String command);
|
||||||
|
|
||||||
|
int getVersion();
|
||||||
|
|
||||||
|
List<AdbDeviceResponder> getDevices();
|
||||||
}
|
}
|
||||||
|
@ -8,24 +8,20 @@ import java.net.Socket;
|
|||||||
public class AdbServer extends SocketServer {
|
public class AdbServer extends SocketServer {
|
||||||
|
|
||||||
public static final int DEFAULT_PORT = 15037;
|
public static final int DEFAULT_PORT = 15037;
|
||||||
|
private AdbResponder responder;
|
||||||
|
|
||||||
public AdbServer()
|
public AdbServer(AdbResponder responder)
|
||||||
{
|
{
|
||||||
this(DEFAULT_PORT);
|
this(responder, DEFAULT_PORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdbServer(int port) {
|
public AdbServer(AdbResponder responder, int port) {
|
||||||
super(port);
|
super(port);
|
||||||
|
this.responder = responder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Runnable createResponder(Socket socket) {
|
protected Runnable createResponder(Socket socket) {
|
||||||
return new AdbProtocolHandler(socket);
|
return new AdbProtocolHandler(socket, responder);
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args)
|
|
||||||
{
|
|
||||||
SocketServer server = new AdbServer();
|
|
||||||
server.run();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,8 @@ public class MockedTestCases {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testListDevices() throws Exception {
|
public void testListDevices() throws Exception {
|
||||||
|
server.add("serial-123");
|
||||||
List<JadbDevice> devices = connection.getDevices();
|
List<JadbDevice> devices = connection.getDevices();
|
||||||
Assert.assertEquals("X", devices.get(0).getSerial());
|
Assert.assertEquals("serial-123", devices.get(0).getSerial());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,18 @@ import se.vidstige.jadb.server.AdbResponder;
|
|||||||
import se.vidstige.jadb.server.AdbServer;
|
import se.vidstige.jadb.server.AdbServer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by vidstige on 2014-03-20.
|
* Created by vidstige on 2014-03-20.
|
||||||
*/
|
*/
|
||||||
public class FakeAdbServer implements AdbResponder, AdbDeviceResponder {
|
public class FakeAdbServer implements AdbResponder {
|
||||||
private final AdbServer server;
|
private final AdbServer server;
|
||||||
|
private List<AdbDeviceResponder> devices = new ArrayList<AdbDeviceResponder>();
|
||||||
|
|
||||||
public FakeAdbServer(int port) {
|
public FakeAdbServer(int port) {
|
||||||
server = new AdbServer(port);
|
server = new AdbServer(this, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -24,4 +27,42 @@ public class FakeAdbServer implements AdbResponder, AdbDeviceResponder {
|
|||||||
public void stop() throws IOException, InterruptedException {
|
public void stop() throws IOException, InterruptedException {
|
||||||
server.stop();
|
server.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCommand(String command) {
|
||||||
|
System.out.println("command: " +command);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getVersion() {
|
||||||
|
return 31;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(String serial)
|
||||||
|
{
|
||||||
|
devices.add(new DeviceResponder(serial));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AdbDeviceResponder> getDevices() {
|
||||||
|
return devices;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class DeviceResponder implements AdbDeviceResponder {
|
||||||
|
private final String serial;
|
||||||
|
|
||||||
|
private DeviceResponder(String serial) {
|
||||||
|
this.serial = serial;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSerial() {
|
||||||
|
return serial;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return "device";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user