proxy progress

one more go? it makes no sense :(
This commit is contained in:
rusefi 2020-07-08 20:03:23 -04:00
parent cc3808d2f0
commit a661394012
2 changed files with 20 additions and 5 deletions

View File

@ -24,6 +24,7 @@ public class PortHolder {
private final DataListener dataListener;
private final Logger logger;
private final Callable<IoStream> streamFactory;
private final Callable<IoStream> ioStreamCallable;
private final LinkManager linkManager;
public ConnectionStateListener listener;
@ -34,12 +35,13 @@ public class PortHolder {
@Nullable
private BinaryProtocol bp;
protected PortHolder(String port, LinkManager linkManager, Logger logger, Callable<IoStream> streamFactory) {
protected PortHolder(String port, LinkManager linkManager, Logger logger, Callable<IoStream> streamFactory, Callable<IoStream> ioStreamCallable) {
this.port = port;
this.linkManager = linkManager;
dataListener = freshData -> linkManager.getEngineState().processNewData(new String(freshData), LinkManager.ENCODER);
this.logger = logger;
this.streamFactory = streamFactory;
this.ioStreamCallable = ioStreamCallable;
}
boolean connectAndReadConfiguration() {
@ -48,13 +50,11 @@ public class PortHolder {
MessagesCentral.getInstance().postMessage(logger, getClass(), "Opening port: " + port);
stream = streamFactory.call();
stream = ioStreamCallable.call();
if (stream == null) {
// error already reported
return false;
}
IncomingDataBuffer dataBuffer = IncomingDataBuffer.createDataBuffer(stream, logger);
stream.setDataBuffer(dataBuffer);
synchronized (portLock) {
bp = new BinaryProtocol(linkManager, logger, stream, stream.getDataBuffer());
portLock.notifyAll();

View File

@ -3,6 +3,7 @@ package com.rusefi.io.serial;
import com.opensr5.Logger;
import com.rusefi.Callable;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.core.MessagesCentral;
import com.rusefi.io.ConnectionStateListener;
import com.rusefi.io.IoStream;
@ -23,7 +24,21 @@ public class SerialConnector implements LinkConnector {
this.linkManager = linkManager;
this.logger = logger;
portHolder = new PortHolder(portName, linkManager, logger, streamFactory);
Callable<IoStream> ioStreamCallable = new Callable<IoStream>() {
@Override
public IoStream call() {
IoStream stream = streamFactory.call();
if (stream == null) {
// error already reported
return null;
}
IncomingDataBuffer dataBuffer = IncomingDataBuffer.createDataBuffer(stream, logger);
stream.setDataBuffer(dataBuffer);
return stream;
}
};
portHolder = new PortHolder(portName, linkManager, logger, streamFactory, ioStreamCallable);
}
@Override