proxy progress

This commit is contained in:
rusefi 2020-07-08 11:54:34 -04:00
parent 720ade2319
commit 968015f5ec
9 changed files with 34 additions and 18 deletions

View File

@ -118,7 +118,7 @@ public class BinaryProtocol implements BinaryProtocolCommands {
} }
}; };
incomingData = createDataBuffer(stream, logger); incomingData = stream.getDataBuffer();
Runtime.getRuntime().addShutdownHook(hook); Runtime.getRuntime().addShutdownHook(hook);
rpmListener = value -> { rpmListener = value -> {
if (value <= COMPOSITE_OFF_RPM) { if (value <= COMPOSITE_OFF_RPM) {
@ -131,12 +131,6 @@ public class BinaryProtocol implements BinaryProtocolCommands {
}; };
} }
public static IncomingDataBuffer createDataBuffer(IoStream stream, Logger logger) {
IncomingDataBuffer incomingData = new IncomingDataBuffer(logger);
stream.setInputListener(incomingData::addData);
return incomingData;
}
public static void sleep(int millis) { public static void sleep(int millis) {
try { try {
Thread.sleep(millis); Thread.sleep(millis);

View File

@ -3,6 +3,7 @@ package com.rusefi.binaryprotocol;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.Timeouts; import com.rusefi.Timeouts;
import com.rusefi.config.generated.Fields; import com.rusefi.config.generated.Fields;
import com.rusefi.io.IoStream;
import etch.util.CircularByteBuffer; import etch.util.CircularByteBuffer;
import net.jcip.annotations.ThreadSafe; import net.jcip.annotations.ThreadSafe;
@ -31,6 +32,12 @@ public class IncomingDataBuffer {
this.logger = logger; this.logger = logger;
} }
public static IncomingDataBuffer createDataBuffer(IoStream stream, Logger logger) {
IncomingDataBuffer incomingData = new IncomingDataBuffer(logger);
stream.setInputListener(incomingData::addData);
return incomingData;
}
public byte[] getPacket(Logger logger, String msg, boolean allowLongResponse) throws InterruptedException, EOFException { public byte[] getPacket(Logger logger, String msg, boolean allowLongResponse) throws InterruptedException, EOFException {
return getPacket(logger, msg, allowLongResponse, System.currentTimeMillis()); return getPacket(logger, msg, allowLongResponse, System.currentTimeMillis());
} }

View File

@ -4,6 +4,7 @@ import com.opensr5.Logger;
import com.opensr5.io.DataListener; import com.opensr5.io.DataListener;
import com.opensr5.io.WriteStream; import com.opensr5.io.WriteStream;
import com.rusefi.binaryprotocol.BinaryProtocol; import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.binaryprotocol.IoHelper; import com.rusefi.binaryprotocol.IoHelper;
import java.io.IOException; import java.io.IOException;
@ -40,6 +41,8 @@ public interface IoStream extends WriteStream {
write(packet); write(packet);
} }
IncomingDataBuffer getDataBuffer();
/** /**
* @param listener would be invoked from unknown implementation-dependent thread * @param listener would be invoked from unknown implementation-dependent thread
*/ */

View File

@ -187,7 +187,7 @@ public class LinkManager {
int portPart = TcpConnector.getTcpPort(port); int portPart = TcpConnector.getTcpPort(port);
String hostname = TcpConnector.getHostname(port); String hostname = TcpConnector.getHostname(port);
socket = new Socket(hostname, portPart); socket = new Socket(hostname, portPart);
return new TcpIoStream(logger, LinkManager.this, socket); return new TcpIoStream(logger, socket);
} catch (Throwable e) { } catch (Throwable e) {
stateListener.onConnectionFailed(); stateListener.onConnectionFailed();
return null; return null;

View File

@ -5,6 +5,7 @@ import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent; import com.fazecast.jSerialComm.SerialPortEvent;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.opensr5.io.DataListener; import com.opensr5.io.DataListener;
import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.io.IoStream; import com.rusefi.io.IoStream;
/** /**
@ -14,6 +15,7 @@ import com.rusefi.io.IoStream;
* 06/03/2019 * 06/03/2019
*/ */
public class SerialIoStreamJSerialComm implements IoStream { public class SerialIoStreamJSerialComm implements IoStream {
private final IncomingDataBuffer dataBuffer;
private boolean isClosed; private boolean isClosed;
private SerialPort sp; private SerialPort sp;
private final String port; private final String port;
@ -26,6 +28,12 @@ public class SerialIoStreamJSerialComm implements IoStream {
this.sp = sp; this.sp = sp;
this.port = port; this.port = port;
this.logger = logger; this.logger = logger;
dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger);
}
@Override
public IncomingDataBuffer getDataBuffer() {
return dataBuffer;
} }
@Override @Override

View File

@ -109,7 +109,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
byte command = (byte) dis.read(); byte command = (byte) dis.read();
System.out.println("Got [" + (char) command + "/" + command + "] command"); System.out.println("Got [" + (char) command + "/" + command + "] command");
TcpIoStream stream = new TcpIoStream(logger, linkManager, clientSocket); TcpIoStream stream = new TcpIoStream(logger, clientSocket);
if (command == COMMAND_HELLO) { if (command == COMMAND_HELLO) {
stream.sendPacket((TS_OK + Fields.TS_SIGNATURE).getBytes(), logger); stream.sendPacket((TS_OK + Fields.TS_SIGNATURE).getBytes(), logger);
} else if (command == COMMAND_PROTOCOL) { } else if (command == COMMAND_PROTOCOL) {

View File

@ -2,9 +2,9 @@ package com.rusefi.io.tcp;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.opensr5.io.DataListener; import com.opensr5.io.DataListener;
import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.io.ByteReader; import com.rusefi.io.ByteReader;
import com.rusefi.io.IoStream; import com.rusefi.io.IoStream;
import com.rusefi.io.LinkManager;
import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.IOException; import java.io.IOException;
@ -20,22 +20,27 @@ public class TcpIoStream implements IoStream {
private final InputStream input; private final InputStream input;
private final OutputStream output; private final OutputStream output;
private final Logger logger; private final Logger logger;
private final LinkManager linkManager; private final IncomingDataBuffer dataBuffer;
private boolean isClosed; private boolean isClosed;
public TcpIoStream(Logger logger, LinkManager linkManager, Socket socket) throws IOException { public TcpIoStream(Logger logger, Socket socket) throws IOException {
this(logger, linkManager, new BufferedInputStream(socket.getInputStream()), socket.getOutputStream()); this(logger, new BufferedInputStream(socket.getInputStream()), socket.getOutputStream());
} }
private TcpIoStream(Logger logger, LinkManager linkManager, InputStream input, OutputStream output) { private TcpIoStream(Logger logger, InputStream input, OutputStream output) {
this.logger = logger; this.logger = logger;
this.linkManager = linkManager;
if (input == null) if (input == null)
throw new NullPointerException("input"); throw new NullPointerException("input");
if (output == null) if (output == null)
throw new NullPointerException("output"); throw new NullPointerException("output");
this.output = output; this.output = output;
this.input = input; this.input = input;
dataBuffer = IncomingDataBuffer.createDataBuffer(this, logger);
}
@Override
public IncomingDataBuffer getDataBuffer() {
return dataBuffer;
} }
@Override @Override

View File

@ -2,7 +2,6 @@ package com.rusefi.autodetect;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.FileLog; import com.rusefi.FileLog;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.binaryprotocol.BinaryProtocolCommands; import com.rusefi.binaryprotocol.BinaryProtocolCommands;
import com.rusefi.binaryprotocol.IncomingDataBuffer; import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.config.generated.Fields; import com.rusefi.config.generated.Fields;
@ -40,7 +39,7 @@ public class SerialAutoChecker implements Runnable {
public void run() { public void run() {
IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort, logger); IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort, logger);
Logger logger = FileLog.LOGGER; Logger logger = FileLog.LOGGER;
IncomingDataBuffer incomingData = BinaryProtocol.createDataBuffer(stream, logger); IncomingDataBuffer incomingData = stream.getDataBuffer();
try { try {
stream.sendPacket(new byte[]{BinaryProtocolCommands.COMMAND_HELLO}, logger); stream.sendPacket(new byte[]{BinaryProtocolCommands.COMMAND_HELLO}, logger);
byte[] response = incomingData.getPacket(logger, "", false); byte[] response = incomingData.getPacket(logger, "", false);

View File

@ -308,7 +308,7 @@ public class ConsoleTools {
} }
IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort, FileLog.LOGGER); IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort, FileLog.LOGGER);
Logger logger = FileLog.LOGGER; Logger logger = FileLog.LOGGER;
IncomingDataBuffer incomingData = BinaryProtocol.createDataBuffer(stream, logger); IncomingDataBuffer incomingData = stream.getDataBuffer();
byte[] commandBytes = BinaryProtocol.getTextCommandBytes("hello"); byte[] commandBytes = BinaryProtocol.getTextCommandBytes("hello");
stream.sendPacket(commandBytes, logger); stream.sendPacket(commandBytes, logger);
// skipping response // skipping response