mirror of https://github.com/rusefi/RomRaider.git
simplified data handling
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@622 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
11b3d8995c
commit
de4d74ef35
|
@ -47,10 +47,8 @@ import enginuity.logger.ecu.ui.EcuDataComparator;
|
||||||
import enginuity.logger.ecu.ui.MessageListener;
|
import enginuity.logger.ecu.ui.MessageListener;
|
||||||
import enginuity.logger.ecu.ui.SerialPortComboBox;
|
import enginuity.logger.ecu.ui.SerialPortComboBox;
|
||||||
import enginuity.logger.ecu.ui.StatusIndicator;
|
import enginuity.logger.ecu.ui.StatusIndicator;
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandler;
|
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager;
|
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager;
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManagerImpl;
|
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManagerImpl;
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerThreadWrapper;
|
|
||||||
import enginuity.logger.ecu.ui.handler.dash.DashboardUpdateHandler;
|
import enginuity.logger.ecu.ui.handler.dash.DashboardUpdateHandler;
|
||||||
import enginuity.logger.ecu.ui.handler.file.FileUpdateHandlerImpl;
|
import enginuity.logger.ecu.ui.handler.file.FileUpdateHandlerImpl;
|
||||||
import enginuity.logger.ecu.ui.handler.graph.GraphUpdateHandler;
|
import enginuity.logger.ecu.ui.handler.graph.GraphUpdateHandler;
|
||||||
|
@ -141,7 +139,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
private JLabel statsLabel;
|
private JLabel statsLabel;
|
||||||
private JTabbedPane tabbedPane;
|
private JTabbedPane tabbedPane;
|
||||||
private SerialPortComboBox portsComboBox;
|
private SerialPortComboBox portsComboBox;
|
||||||
private DataUpdateHandlerManager dataUpdateHandlerManager;
|
|
||||||
private DataUpdateHandlerManager dataHandlerManager;
|
private DataUpdateHandlerManager dataHandlerManager;
|
||||||
private DataRegistrationBroker dataTabBroker;
|
private DataRegistrationBroker dataTabBroker;
|
||||||
private ParameterListTableModel dataTabParamListTableModel;
|
private ParameterListTableModel dataTabParamListTableModel;
|
||||||
|
@ -199,8 +196,15 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
dataUpdateHandlerManager = new DataUpdateHandlerManagerImpl();
|
fileUpdateHandler = new FileUpdateHandlerImpl(settings, this);
|
||||||
controller = new LoggerControllerImpl(settings, ecuInitCallback, this, dataUpdateHandlerManager);
|
dataTableModel = new LiveDataTableModel();
|
||||||
|
liveDataUpdateHandler = new LiveDataUpdateHandler(dataTableModel);
|
||||||
|
graphPanel = new JPanel(new BorderLayout(2, 2));
|
||||||
|
graphUpdateHandler = new GraphUpdateHandler(graphPanel);
|
||||||
|
dashboardPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3));
|
||||||
|
dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel);
|
||||||
|
controller = new LoggerControllerImpl(settings, ecuInitCallback, this, liveDataUpdateHandler,
|
||||||
|
graphUpdateHandler, dashboardUpdateHandler, fileUpdateHandler, TableUpdateHandler.getInstance());
|
||||||
messageLabel = new JLabel(ENGINUITY_ECU_LOGGER_TITLE);
|
messageLabel = new JLabel(ENGINUITY_ECU_LOGGER_TITLE);
|
||||||
ecuIdLabel = new JLabel(buildEcuIdLabelText());
|
ecuIdLabel = new JLabel(buildEcuIdLabelText());
|
||||||
statsLabel = buildStatsLabel();
|
statsLabel = buildStatsLabel();
|
||||||
|
@ -221,13 +225,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
dashboardTabParamListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_PARAMETERS);
|
dashboardTabParamListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_PARAMETERS);
|
||||||
dashboardTabSwitchListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_SWITCHES);
|
dashboardTabSwitchListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_SWITCHES);
|
||||||
dashboardTabExternalListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_EXTERNAL);
|
dashboardTabExternalListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_EXTERNAL);
|
||||||
fileUpdateHandler = new FileUpdateHandlerImpl(settings, this);
|
|
||||||
dataTableModel = new LiveDataTableModel();
|
|
||||||
liveDataUpdateHandler = new LiveDataUpdateHandler(dataTableModel);
|
|
||||||
graphPanel = new JPanel(new BorderLayout(2, 2));
|
|
||||||
graphUpdateHandler = new GraphUpdateHandler(graphPanel);
|
|
||||||
dashboardPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3));
|
|
||||||
dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initControllerListeners() {
|
private void initControllerListeners() {
|
||||||
|
@ -264,7 +261,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
private void loadLoggerConfig() {
|
private void loadLoggerConfig() {
|
||||||
try {
|
try {
|
||||||
EcuDataLoader dataLoader = new EcuDataLoaderImpl();
|
EcuDataLoader dataLoader = new EcuDataLoaderImpl();
|
||||||
dataLoader.loadFromXml(settings.getLoggerConfigFilePath(), settings.getLoggerProtocol(), settings.getFileLoggingControllerSwitchId(), ecuInit);
|
dataLoader.loadFromXml(settings.getLoggerConfigFilePath(), settings.getLoggerProtocol(),
|
||||||
|
settings.getFileLoggingControllerSwitchId(), ecuInit);
|
||||||
List<EcuParameter> ecuParams = dataLoader.getEcuParameters();
|
List<EcuParameter> ecuParams = dataLoader.getEcuParameters();
|
||||||
addConvertorUpdateListeners(ecuParams);
|
addConvertorUpdateListeners(ecuParams);
|
||||||
loadEcuParams(ecuParams);
|
loadEcuParams(ecuParams);
|
||||||
|
@ -482,26 +480,15 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initDataUpdateHandlers() {
|
private void initDataUpdateHandlers() {
|
||||||
DataUpdateHandler threadedFileUpdateHandler = startHandlerInThread(fileUpdateHandler);
|
dataHandlerManager.addHandler(liveDataUpdateHandler);
|
||||||
dataHandlerManager.addHandler(startHandlerInThread(liveDataUpdateHandler));
|
dataHandlerManager.addHandler(fileUpdateHandler);
|
||||||
dataHandlerManager.addHandler(threadedFileUpdateHandler);
|
dataHandlerManager.addHandler(TableUpdateHandler.getInstance());
|
||||||
dataHandlerManager.addHandler(startHandlerInThread(TableUpdateHandler.getInstance()));
|
graphHandlerManager.addHandler(graphUpdateHandler);
|
||||||
graphHandlerManager.addHandler(startHandlerInThread(graphUpdateHandler));
|
graphHandlerManager.addHandler(fileUpdateHandler);
|
||||||
graphHandlerManager.addHandler(threadedFileUpdateHandler);
|
graphHandlerManager.addHandler(TableUpdateHandler.getInstance());
|
||||||
dashboardHandlerManager.addHandler(startHandlerInThread(dashboardUpdateHandler));
|
dashboardHandlerManager.addHandler(dashboardUpdateHandler);
|
||||||
dashboardHandlerManager.addHandler(threadedFileUpdateHandler);
|
dashboardHandlerManager.addHandler(fileUpdateHandler);
|
||||||
|
dashboardHandlerManager.addHandler(TableUpdateHandler.getInstance());
|
||||||
dataUpdateHandlerManager.addHandler(dataHandlerManager);
|
|
||||||
dataUpdateHandlerManager.addHandler(graphHandlerManager);
|
|
||||||
dataUpdateHandlerManager.addHandler(dashboardHandlerManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
private DataUpdateHandler startHandlerInThread(DataUpdateHandler handler) {
|
|
||||||
DataUpdateHandlerThreadWrapper runnableHandler = new DataUpdateHandlerThreadWrapper(handler);
|
|
||||||
Thread thread = new Thread(runnableHandler);
|
|
||||||
thread.setDaemon(true);
|
|
||||||
thread.start();
|
|
||||||
return runnableHandler;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private JComponent buildTabbedPane() {
|
private JComponent buildTabbedPane() {
|
||||||
|
@ -786,7 +773,9 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cleanUpUpdateHandlers() {
|
private void cleanUpUpdateHandlers() {
|
||||||
dataUpdateHandlerManager.cleanUp();
|
dataHandlerManager.cleanUp();
|
||||||
|
graphHandlerManager.cleanUp();
|
||||||
|
dashboardHandlerManager.cleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Settings getSettings() {
|
public Settings getSettings() {
|
||||||
|
|
|
@ -29,16 +29,16 @@ import enginuity.logger.ecu.definition.EcuSwitch;
|
||||||
import enginuity.logger.ecu.definition.LoggerData;
|
import enginuity.logger.ecu.definition.LoggerData;
|
||||||
import enginuity.logger.ecu.ui.MessageListener;
|
import enginuity.logger.ecu.ui.MessageListener;
|
||||||
import enginuity.logger.ecu.ui.StatusChangeListener;
|
import enginuity.logger.ecu.ui.StatusChangeListener;
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager;
|
import enginuity.logger.ecu.ui.handler.DataUpdateHandler;
|
||||||
import static enginuity.util.ParamChecker.checkNotNull;
|
import static enginuity.util.ParamChecker.checkNotNull;
|
||||||
|
|
||||||
public final class LoggerControllerImpl implements LoggerController {
|
public final class LoggerControllerImpl implements LoggerController {
|
||||||
private final QueryManager queryManager;
|
private final QueryManager queryManager;
|
||||||
|
|
||||||
public LoggerControllerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener,
|
public LoggerControllerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener,
|
||||||
DataUpdateHandlerManager dataUpdateHandlerManager) {
|
DataUpdateHandler... dataUpdateHandlers) {
|
||||||
checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager);
|
checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlers);
|
||||||
queryManager = new QueryManagerImpl(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager);
|
queryManager = new QueryManagerImpl(settings, ecuInitCallback, messageListener, dataUpdateHandlers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void addListener(StatusChangeListener listener) {
|
public synchronized void addListener(StatusChangeListener listener) {
|
||||||
|
|
|
@ -41,9 +41,10 @@ import enginuity.logger.ecu.definition.ExternalData;
|
||||||
import enginuity.logger.ecu.definition.LoggerData;
|
import enginuity.logger.ecu.definition.LoggerData;
|
||||||
import enginuity.logger.ecu.ui.MessageListener;
|
import enginuity.logger.ecu.ui.MessageListener;
|
||||||
import enginuity.logger.ecu.ui.StatusChangeListener;
|
import enginuity.logger.ecu.ui.StatusChangeListener;
|
||||||
import enginuity.logger.ecu.ui.handler.DataUpdateHandlerManager;
|
import enginuity.logger.ecu.ui.handler.DataUpdateHandler;
|
||||||
import static enginuity.util.HexUtil.asHex;
|
import static enginuity.util.HexUtil.asHex;
|
||||||
import static enginuity.util.ParamChecker.checkNotNull;
|
import static enginuity.util.ParamChecker.checkNotNull;
|
||||||
|
import static enginuity.util.ThreadUtil.runAsDaemon;
|
||||||
import static enginuity.util.ThreadUtil.sleep;
|
import static enginuity.util.ThreadUtil.sleep;
|
||||||
|
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
@ -65,19 +66,19 @@ public final class QueryManagerImpl implements QueryManager {
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
private final EcuInitCallback ecuInitCallback;
|
private final EcuInitCallback ecuInitCallback;
|
||||||
private final MessageListener messageListener;
|
private final MessageListener messageListener;
|
||||||
private final DataUpdateHandlerManager dataUpdateHandlerManager;
|
private final DataUpdateHandler[] dataUpdateHandlers;
|
||||||
private EcuQuery fileLoggerQuery;
|
private EcuQuery fileLoggerQuery;
|
||||||
private Thread queryManagerThread;
|
private Thread queryManagerThread;
|
||||||
private boolean started;
|
private boolean started;
|
||||||
private boolean stop;
|
private boolean stop;
|
||||||
|
|
||||||
public QueryManagerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener,
|
public QueryManagerImpl(Settings settings, EcuInitCallback ecuInitCallback, MessageListener messageListener,
|
||||||
DataUpdateHandlerManager dataUpdateHandlerManager) {
|
DataUpdateHandler... dataUpdateHandlers) {
|
||||||
checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlerManager);
|
checkNotNull(settings, ecuInitCallback, messageListener, dataUpdateHandlers);
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.ecuInitCallback = ecuInitCallback;
|
this.ecuInitCallback = ecuInitCallback;
|
||||||
this.messageListener = messageListener;
|
this.messageListener = messageListener;
|
||||||
this.dataUpdateHandlerManager = dataUpdateHandlerManager;
|
this.dataUpdateHandlers = dataUpdateHandlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void addListener(StatusChangeListener listener) {
|
public synchronized void addListener(StatusChangeListener listener) {
|
||||||
|
@ -173,17 +174,9 @@ public final class QueryManagerImpl implements QueryManager {
|
||||||
messageListener.reportMessage("Select parameters to be logged...");
|
messageListener.reportMessage("Select parameters to be logged...");
|
||||||
sleep(1000L);
|
sleep(1000L);
|
||||||
} else {
|
} else {
|
||||||
List<EcuQuery> ecuQueries = filterEcuQueries(queryMap.values());
|
sendEcuQueries(txManager);
|
||||||
if (fileLoggerQuery != null) {
|
sendExternalQueries();
|
||||||
ecuQueries.add(fileLoggerQuery);
|
handleQueryResponse();
|
||||||
}
|
|
||||||
txManager.sendQueries(ecuQueries);
|
|
||||||
List<ExternalQuery> externalQueries = filterExternalQueries(queryMap.values());
|
|
||||||
for (ExternalQuery externalQuery : externalQueries) {
|
|
||||||
//FIXME: This is a hack!!
|
|
||||||
externalQuery.setResponse(externalQuery.getLoggerData().getSelectedConvertor().convert(null));
|
|
||||||
}
|
|
||||||
dataUpdateHandlerManager.handleDataUpdate(buildResponse(queryMap.values()));
|
|
||||||
count++;
|
count++;
|
||||||
messageListener.reportMessage("Querying ECU...");
|
messageListener.reportMessage("Querying ECU...");
|
||||||
messageListener.reportStats(buildStatsMessage(start, count));
|
messageListener.reportStats(buildStatsMessage(start, count));
|
||||||
|
@ -196,6 +189,32 @@ public final class QueryManagerImpl implements QueryManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sendEcuQueries(TransmissionManager txManager) {
|
||||||
|
List<EcuQuery> ecuQueries = filterEcuQueries(queryMap.values());
|
||||||
|
if (fileLoggerQuery != null) {
|
||||||
|
ecuQueries.add(fileLoggerQuery);
|
||||||
|
}
|
||||||
|
txManager.sendQueries(ecuQueries);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendExternalQueries() {
|
||||||
|
List<ExternalQuery> externalQueries = filterExternalQueries(queryMap.values());
|
||||||
|
for (ExternalQuery externalQuery : externalQueries) {
|
||||||
|
//FIXME: This is a hack!!
|
||||||
|
externalQuery.setResponse(externalQuery.getLoggerData().getSelectedConvertor().convert(null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleQueryResponse() {
|
||||||
|
for (final DataUpdateHandler dataUpdateHandler : dataUpdateHandlers) {
|
||||||
|
runAsDaemon(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
dataUpdateHandler.handleDataUpdate(buildResponse(queryMap.values()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Response buildResponse(Collection<Query> queries) {
|
private Response buildResponse(Collection<Query> queries) {
|
||||||
Response response = new ResponseImpl();
|
Response response = new ResponseImpl();
|
||||||
for (Query query : queries) {
|
for (Query query : queries) {
|
||||||
|
|
|
@ -21,8 +21,18 @@
|
||||||
|
|
||||||
package enginuity.logger.ecu.ui.handler;
|
package enginuity.logger.ecu.ui.handler;
|
||||||
|
|
||||||
public interface DataUpdateHandlerManager extends DataUpdateHandler {
|
import enginuity.logger.ecu.definition.LoggerData;
|
||||||
|
|
||||||
|
public interface DataUpdateHandlerManager {
|
||||||
|
|
||||||
void addHandler(DataUpdateHandler handler);
|
void addHandler(DataUpdateHandler handler);
|
||||||
|
|
||||||
|
void registerData(LoggerData loggerData);
|
||||||
|
|
||||||
|
void deregisterData(LoggerData loggerData);
|
||||||
|
|
||||||
|
void cleanUp();
|
||||||
|
|
||||||
|
void reset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
|
|
||||||
package enginuity.logger.ecu.ui.handler;
|
package enginuity.logger.ecu.ui.handler;
|
||||||
|
|
||||||
import enginuity.logger.ecu.comms.query.Response;
|
|
||||||
import enginuity.logger.ecu.definition.LoggerData;
|
import enginuity.logger.ecu.definition.LoggerData;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -40,12 +39,6 @@ public final class DataUpdateHandlerManagerImpl implements DataUpdateHandlerMana
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void handleDataUpdate(Response response) {
|
|
||||||
for (DataUpdateHandler handler : handlers) {
|
|
||||||
handler.handleDataUpdate(response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void deregisterData(LoggerData loggerData) {
|
public synchronized void deregisterData(LoggerData loggerData) {
|
||||||
for (DataUpdateHandler handler : handlers) {
|
for (DataUpdateHandler handler : handlers) {
|
||||||
handler.deregisterData(loggerData);
|
handler.deregisterData(loggerData);
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* Enginuity Open-Source Tuning, Logging and Reflashing
|
|
||||||
* Copyright (C) 2006 Enginuity.org
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package enginuity.logger.ecu.ui.handler;
|
|
||||||
|
|
||||||
import enginuity.logger.ecu.comms.query.Response;
|
|
||||||
import enginuity.logger.ecu.definition.LoggerData;
|
|
||||||
import static enginuity.util.ThreadUtil.sleep;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import static java.util.Collections.synchronizedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public final class DataUpdateHandlerThreadWrapper implements DataUpdateHandler, Runnable {
|
|
||||||
private final List<Response> updateList = synchronizedList(new ArrayList<Response>());
|
|
||||||
private final List<Response> workingList = synchronizedList(new ArrayList<Response>());
|
|
||||||
private final DataUpdateHandler wrappee;
|
|
||||||
private boolean stop = false;
|
|
||||||
|
|
||||||
public DataUpdateHandlerThreadWrapper(DataUpdateHandler wrappee) {
|
|
||||||
this.wrappee = wrappee;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void registerData(LoggerData loggerData) {
|
|
||||||
wrappee.registerData(loggerData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized void handleDataUpdate(Response response) {
|
|
||||||
updateList.add(response);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deregisterData(LoggerData loggerData) {
|
|
||||||
wrappee.deregisterData(loggerData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void cleanUp() {
|
|
||||||
stop = true;
|
|
||||||
wrappee.cleanUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void reset() {
|
|
||||||
wrappee.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
while (!stop) {
|
|
||||||
updateWorkingList();
|
|
||||||
for (final Response response : workingList) {
|
|
||||||
wrappee.handleDataUpdate(response);
|
|
||||||
}
|
|
||||||
sleep(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private synchronized void updateWorkingList() {
|
|
||||||
workingList.clear();
|
|
||||||
for (Response response : updateList) {
|
|
||||||
workingList.add(response);
|
|
||||||
}
|
|
||||||
updateList.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -36,4 +36,14 @@ public final class ThreadUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void run(Runnable runnable) {
|
||||||
|
new Thread(runnable).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void runAsDaemon(Runnable runnable) {
|
||||||
|
Thread thread = new Thread(runnable);
|
||||||
|
thread.setDaemon(true);
|
||||||
|
thread.start();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue