mirror of https://github.com/rusefi/RomRaider.git
add timer proxy
git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@178 38686702-15cf-42e4-a595-3071df8bf5ea
This commit is contained in:
parent
bddc92ed16
commit
18d5ac5fb7
|
@ -1,4 +1,4 @@
|
||||||
log4j.rootLogger=info, stdout, file
|
log4j.rootLogger=warn, stdout, file
|
||||||
|
|
||||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
|
@ -8,3 +8,5 @@ log4j.appender.file=org.apache.log4j.FileAppender
|
||||||
log4j.appender.file.File=romraider.log
|
log4j.appender.file.File=romraider.log
|
||||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
log4j.appender.file.layout.ConversionPattern=%-5r %-5p [%t] - %m%n
|
log4j.appender.file.layout.ConversionPattern=%-5r %-5p [%t] - %m%n
|
||||||
|
|
||||||
|
log4j.logger.com.romraider.util.proxy.TimeWrapper=trace
|
||||||
|
|
|
@ -30,13 +30,15 @@ import static com.romraider.io.j2534.op20.OpenPort20.CONFIG_P4_MIN;
|
||||||
import static com.romraider.io.j2534.op20.OpenPort20.FLAG_ISO9141_NO_CHECKSUM;
|
import static com.romraider.io.j2534.op20.OpenPort20.FLAG_ISO9141_NO_CHECKSUM;
|
||||||
import static com.romraider.io.j2534.op20.OpenPort20.PROTOCOL_ISO9141;
|
import static com.romraider.io.j2534.op20.OpenPort20.PROTOCOL_ISO9141;
|
||||||
import static com.romraider.util.ParamChecker.checkNotNull;
|
import static com.romraider.util.ParamChecker.checkNotNull;
|
||||||
|
import static com.romraider.util.proxy.Proxifier.proxy;
|
||||||
|
import com.romraider.util.proxy.TimerWrapper;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import static org.apache.log4j.Logger.getLogger;
|
import static org.apache.log4j.Logger.getLogger;
|
||||||
|
|
||||||
public final class J2534ConnectionManager implements ConnectionManager {
|
public final class J2534ConnectionManager implements ConnectionManager {
|
||||||
private static final Logger LOGGER = getLogger(J2534ConnectionManager.class);
|
private static final Logger LOGGER = getLogger(J2534ConnectionManager.class);
|
||||||
// private final J2534 api = new Old_J2534OpenPort20(PROTOCOL_ISO9141);
|
// private final J2534 api = new Old_J2534OpenPort20(PROTOCOL_ISO9141);
|
||||||
private final J2534 api = new J2534OpenPort20(PROTOCOL_ISO9141);
|
private final J2534 api = proxy(new J2534OpenPort20(PROTOCOL_ISO9141), TimerWrapper.class);
|
||||||
private int channelId;
|
private int channelId;
|
||||||
private int deviceId;
|
private int deviceId;
|
||||||
private int msgId;
|
private int msgId;
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.romraider.util.proxy;
|
||||||
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
import static java.lang.reflect.Proxy.newProxyInstance;
|
||||||
|
|
||||||
|
public final class Proxifier {
|
||||||
|
public static <T> T proxy(T t, Class<? extends Wrapper> cls) {
|
||||||
|
Wrapper wrapper = instantiate(cls, t);
|
||||||
|
return proxy(t, wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> T proxy(T t, Wrapper wrapper) {
|
||||||
|
Class<?> cls = t.getClass();
|
||||||
|
ClassLoader loader = cls.getClassLoader();
|
||||||
|
Class<?>[] interfaces = cls.getInterfaces();
|
||||||
|
return (T) newProxyInstance(loader, interfaces, wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> Wrapper instantiate(Class<? extends Wrapper> wrapper, T t) {
|
||||||
|
try {
|
||||||
|
Constructor<?> constructor = wrapper.getConstructor(Object.class);
|
||||||
|
return (Wrapper) constructor.newInstance(t);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.romraider.util.proxy;
|
||||||
|
|
||||||
|
import static com.romraider.util.ParamChecker.checkNotNull;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import static org.apache.log4j.Logger.getLogger;
|
||||||
|
import static java.lang.System.currentTimeMillis;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
public final class TimerWrapper implements Wrapper {
|
||||||
|
private static final Logger LOGGER = getLogger(TimerWrapper.class);
|
||||||
|
private final Object delegate;
|
||||||
|
|
||||||
|
public TimerWrapper(Object delegate) {
|
||||||
|
checkNotNull(delegate);
|
||||||
|
this.delegate = delegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||||
|
long start = currentTimeMillis();
|
||||||
|
try {
|
||||||
|
return method.invoke(delegate, args);
|
||||||
|
} finally {
|
||||||
|
long time = currentTimeMillis() - start;
|
||||||
|
log(method, time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void log(Method method, long time) {
|
||||||
|
String c = delegate.getClass().getSimpleName();
|
||||||
|
String m = method.getName();
|
||||||
|
LOGGER.trace("[TIMER] - " + c + "." + m + ": " + time + "ms");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.romraider.util.proxy;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationHandler;
|
||||||
|
|
||||||
|
public interface Wrapper extends InvocationHandler {
|
||||||
|
}
|
Loading…
Reference in New Issue